title
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.
solution
找第k大,堆排序O(klogk)
class Solution {
public:
int findKthLargest(vector<int>& nums, int k) {
priority_queue<int, vector<int>, less<int>> pq;
for (auto it : nums) {
pq.push(it);
while (pq.size() > k) {
pq.pop();
}
}
return pq.top();
}
};
排序,O(nlogn)
- 省略
快速选择 :时间复杂度 O(N),空间复杂度 O(1)