这是一个奇怪的问题。我在 Java 中有一个整数数组,其中每个 int 代表一种颜色。它们要么是 0xFFFFFFFF 要么是 0x0。查找此数组是否包含任何等于 0xFFFFFFFF 的值的最快方法是什么?
这是我当前的代码:
int length = w * h;
for (int i = 0; i < length; i++) {
if (pixels[i] == 0xFFFFFFFF) {
return true;
}
}
我不知道是否有更快的方法来做到这一点。不过,我想你们这些 vert 可能会玩一两个把戏。
编辑:由于它只是来自 Bitmap.getPixels() 的一个哑像素数组,因此无法对它进行排序或转换为另一个存储结构。感谢大家的意见,在这种情况下,循环似乎是最好的方法。
最佳答案
不,除非整数数组已经排序,否则没有更快的方法,我怀疑这是一个颜色数组。
扫描未排序的数组需要线性时间“O(n)”。这就是您所做的,一旦找到匹配项就退出该方法,这也很好。
关于java - 查找 int 数组是否包含数字的最快方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7152145/