题解 | #寻找第K大#
寻找第K大
https://www.nowcoder.com/practice/e016ad9b7f0b45048c58a9f27ba618bf
class Solution {
private:
// bool flag = false;
public:
void quickSort(vector<int>& nums, int left, int right, int& k) {
auto i = left;
auto j = right + 1;
if (i >= j) {
return;
}
auto pivot = nums[i];
while (i < j) {
do {
i++;
} while (i <= right && nums[i] <= pivot && i <= j);
do {
j--;
} while (j <= right && nums[j] >= pivot && j >= i);
if (i < j) {
auto tmp = nums[j];
nums[j] = nums[i];
nums[i] = tmp;
}
}
nums[left] = nums[j];
nums[j] = pivot;
if (nums.size() - j == k) {
std::cout << k;
k = nums[j];
return;
}
quickSort(nums, left, j - 1, k);
quickSort(nums, j + 1, right, k);
}
int findKth(vector<int>& a, int n, int K) {
// write code here
quickSort(a, 0, a.size()-1, K);
return K;
}
};
在线编程练习 文章被收录于专栏
C++在线编程练习题解
查看2道真题和解析