在数组中查找一定数量的相邻条目

时间:2015-01-24 10:47:04

标签: java arrays algorithm count

我正在用Java编写虚拟内存分配管理器。我在 n 条目上有一个布尔数组,需要在一行中找到一行 k 个虚假条目。除了进行大规模的二元搜索并计算每一个谬误之外,还有一个很好的方法来计算 k falses,获得该行的起始索引。

谢谢!

1 个答案:

答案 0 :(得分:1)

如果kn的很大一部分,那么最简单的效率衡量标准就是在每次搜索中跳过k项。

int searchForFalses(boolean[] array, int k) {
    for (int n = 0; n < array.length; n += k) {
        if (!array[n])) {
            int start = n;
            while (start >= 0 && !array[start])
                start--;
            int end = n;
            while (end < array.length && !array[end])
                if (end - start >= k)
                    return start;
                else
                    end++;
        }
    }
    return -1;
}