因此,我有一种算法应该返回在数组中出现K次的int。如果出现超过1个int K次,则应返回较高的值。我的以下算法无法正常工作。在下面的示例中,当它应该返回5时它返回1。
#include <iostream>
#include <algorithm>
int appearsKTimes (int size, int inputArray[], int k) {
std::sort(inputArray, inputArray + size);
int i = 1, count = 1;
int element = inputArray[0];
int res = -1;
while (i < size) {
if (element == inputArray[i]) {
count++;
} else {
if (count == k) {
res = element;
}
element = inputArray[i];
count = 1;
}
i++;
}
std::cout << res << std::endl;
return res;
}
int main() {
const int size = 7;
int array[size] = {1, 1, 2, 2, 2, 5, 5};
int occurences = 2;
appearsKTimes(size, array, occurences);
}
因此,我有一种算法应该返回在数组中出现K次的int。如果出现超过1个int K次,则应返回较高的值。我的以下算法不是...
if (count == k) {
res = element;
}
std::cout << res << std::endl;
您的排序方法很好,只需要O(NlogN)时间复杂度,但也可以考虑使用另一种哈希表。它需要时间O(N)和空间O(N)。它更短,因此出错的机会更少: