解题思路:
1.sort 快排 时间复杂度: O(N * logN )
2.建立一个K 个数的 大堆 ,经过排序之后只留下最大的k个数 ,时间复杂度: O(K + (N - K)*logK ) 空间复杂度: O(K) .当 N >> K 的时候堆排序是非常有优势的。
class Solution {
public:
int findKthLargest(vector<int>& nums, int k)
{
priority_queue<int , vector<int> , greater<int>> pq;
for(int i = 0 ; i < k ; ++i)
{
pq.push(nums[i]);
}
for(int i = k ; i <nums.size() ;++i)
{
if(nums[i]>pq.top()) //只有nums[i] > 堆顶的最大元素才入
{
pq.pop();
pq.push(nums[i]);
}
}
return pq.top();
}
};