我有这个函数,它应该计算在某个数组中出现了多少个相同数字的重复项。重要的是,这必须具有复杂性 O(logn)。 我在下面写了这个,但它没有正确计算重复项。 还有一件事,数字是从最低到最高排序的。
int CountElementsinFile(int *Arr, int num, int numOfD)
{
int avg{};
int inB = 0;
int inE = numOfD - 1;
int el{};
while (inB <= inE)
{
avg = (inB + inE) / 2;
if (Arr[avg] == num)
el++;
if (Arr[avg] > num)
inE = avg - 1;
else
inB = avg + 1;
}
return el;
}
最佳答案
使用 std,你可以:
int CountElementsinFile(const int *a, int size, int value)
{
const auto range = std::equal_range(a, a + size, value);
return range.second - range.first;
}
关于c++ - 计算数组 C++ 中相同数字的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55142220/