java - 查找 int 数组是否包含数字的最快方法

标签 java android arrays algorithm

这是一个奇怪的问题。我在 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/

相关文章:

java - 我的 serverSocket 中仅获取一个客户端

android - 如何在 Vs 代码中获取 android 应用程序的 sha1

java - 以编程方式在相对布局中添加按钮网格

arrays - 检查数组 TWIG 中是否存在值

php - 如何从数组中过滤特定值?

c函数返回静态变量

java - Java 中的双缓冲替代方案

java - 无法使用 jdbc 运行 DB2 命令

Android: Canvas 上的颜色与 View 上的颜色看起来不同

Java Swing绘画和鼠标事件闪烁