题解 | #寻找第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++在线编程练习题解