# 215. 数组中的第K个最大元素 经典
力扣原题链接(点我直达) (opens new window)
在未排序的数组中找到第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。
示例 1:
输入: [3,2,1,5,6,4] 和 k = 2
输出: 5
1
2
2
示例 2:
输入: [3,2,3,1,2,4,5,5,6] 和 k = 4
输出: 4
1
2
2
说明:
你可以假设 k 总是有效的,且 1 ≤ k ≤ 数组的长度。
# 第一版 优先队列,小顶堆
执行用时 :12 ms, 在所有 cpp 提交中击败了89.16%的用户
内存消耗 :9.3 MB, 在所有 cpp 提交中击败了67.49%的用户
int findKthLargest(vector<int>& nums, int k) {
priority_queue<int, vector<int>, greater<int>> res;
for (auto& a : nums) {
res.push(a);
if (res.size() > k)
res.pop();
}
return res.top();
}
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10