LeetCode 215题解 | 数组中的第K个最大元素
数组中的第K个最大元素
- 一、题目链接
- 二、题目
- 三、算法原理
- 四、编写代码
一、题目链接
数组中的第K个最大元素
二、题目
三、算法原理
-
法一:排序
-
法二:优先级队列(堆)
重点看法二:
默认建大堆,意味着以后不用自己写堆了,直接用库里的优先级队列即可。
这个问题就是topK问题,只不过不是求解K个最大的,而是要求解第K个最大的。
如何建堆?—— 调用优先级队列的构造接口时底层就会调用建堆算法。
pop 前k-1个数据,再取堆顶元素即可。
四、编写代码
class Solution {
public:int findKthLargest(vector<int>& nums, int k) {priority_queue<int> pq(nums.begin(), nums.end());while (--k){pq.pop();}return pq.top();}
};