我有一个未知大小的数组,想要找到没有排序的第三个最小整数,我该怎么做?
这是我的尝试,但我无法让它发挥作用。
int getThirdSmallest(int* arr, int size) {
int first = arr[0];
int second = 0;
int third = 0;
for (int i = 0; i > size; i++) {
if (first > arr[i]) {
third = second;
second = first;
first = arr[i];
} else if (second > arr[i]) {
third = second;
second = arr[i];
}
else if (third > arr[i]) {
third = arr[i];
}
}
return third;
}
答案 0 :(得分:4)
std::nth_element(arr, arr + 2, arr + size);
return arr[2];
答案 1 :(得分:2)
不要解决您的问题,让我建议一个更好的方法来解决这个问题。您可以使用大小为3的最大堆来执行此操作。算法如下所示:
时间复杂度:O(N)