在数组中查找一定数量的相邻条目
Find a certain number of adjacent entries in an array
我正在 Java 中编写虚拟内存分配管理器。我在 n 条目上有一个布尔数组,需要在一行中找到一行 k 错误条目。除了进行大规模的二进制搜索并计算每批错误之外,是否有一种合适的方法来计算 k 错误,获取该行的起始索引。
谢谢!
如果 k
将占 n
的很大一部分,那么最简单的效率措施可能是在每次搜索中跳过 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;
}
我正在 Java 中编写虚拟内存分配管理器。我在 n 条目上有一个布尔数组,需要在一行中找到一行 k 错误条目。除了进行大规模的二进制搜索并计算每批错误之外,是否有一种合适的方法来计算 k 错误,获取该行的起始索引。
谢谢!
如果 k
将占 n
的很大一部分,那么最简单的效率措施可能是在每次搜索中跳过 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;
}