LeetCode 215. 数组中的第K个最大元素
快速排序
class Solution {
public:
int quick_sort(vector<int>& q, int l, int r, int k)
{
if(l >= r) return q[l];
int i = l - 1, j = r + 1, x = q[ (l + r) >> 1];
while(i < j)
{
do ++ i; while(q[i] > x);
do -- j; while(q[j] < x);
if(i < j) swap(q[i], q[j]);
}
//比较i和j均可,只是边界问题,看个人习惯
if(k <= j) return quick_sort(q, l, j, k);
else return quick_sort(q, j + 1, r, k);
}
int findKthLargest(vector<int>& nums, int k) {
return quick_sort(nums, 0, nums.size() - 1, k - 1);
}
};