思路1:小顶堆
class Solution {
public:
int findKthLargest(vector& nums, int k) {
priority_queue, greater> q;
for(int i=0;iq.top())
{
q.pop();
q.push(nums[i]);
}
}
}
return q.top();
}
};
思路2:快速选择
快排的基础上改进
class Solution {
public:
int findKthLargest(vector& nums, int k) {
int N=nums.size();
int target=k-1; //第k大就是N-k小
int l=0,r=N-1;
while(l<=r)
{
int mid=partition(nums,l,r);
if(mid==target)
return nums[mid];
else if(mid& nums, int left, int right)
{
int pivot=nums[left];
while(left=pivot && left