1 题目
Find the kth largest element in an unsorted array. Note that it is the kth largest element in the sorted order, not the kth distinct element.
Example 1:
Input: [3,2,1,5,6,4] and k = 2
Output: 5
Example 2:
Input: [3,2,3,1,2,4,5,5,6] and k = 4
Output: 4
Note:
You may assume k is always valid, 1 ≤ k ≤ array's length.
2 尝试解
class Solution {
public:
int findKthLargest(vector<int>& nums, int k) {
vector<int> saver(k,INT_MIN);
for(int i = 0; i < nums.size(); i++){
int replace = 0;
while(replace < saver.size() && nums[i] > saver[replace])
replace++;
if(replace != 0){
saver.erase(saver.begin());
saver.insert(saver.begin()+replace-1,nums[i]);
}
}
return saver[0];
}
};
3 标准解
class Solution {
public:
int findKthLargest(vector<int>& nums, int k) {
priority_queue<int, vector<int>, greater<int>> pq;
for (int num : nums) {
pq.push(num);
if (pq.size() > k) {
pq.pop();
}
}
return pq.top();
}
};