题意:数组求第k大。
分析:快排
class Solution { public: int Partition(vector<int>& nums, int l, int r){ int p = nums[l]; while(l < r){ while(l < r && nums[r] >= p) --r; nums[l] = nums[r]; while(l < r && nums[l] <= p) ++l; nums[r] = nums[l]; } nums[l] = p; return l; } int QuickSort(vector<int>& nums, int k, int l, int r){ int p = Partition(nums, l, r); if(r - p + 1 == k) return nums[p]; else if(r - p + 1 > k) return QuickSort(nums, k, p + 1, r); else return QuickSort(nums, k - (r - p + 1), l, p - 1); } int findKthLargest(vector<int>& nums, int k) { int len = nums.size(); return QuickSort(nums, k, 0, len - 1); } };
LeetCode 215. Kth Largest Element in an Array(数组求第k大)
原文:https://www.cnblogs.com/tyty-Somnuspoppy/p/12595365.html