[LeetCode Hot 100] LeetCode215. 数组中的第K个最大元素
题目描述
思路:小顶堆
- 维护一个大小为K的小顶堆
- 遍历所有元素:
- 如果当前堆中元素个数小于K,则将元素添加到堆中
- 如果当前堆中元素个数等于K,则判断第K + 1
方法一:
class Solution {
public int findKthLargest(int[] nums, int k) {
// 优先队列
PriorityQueue<Integer> heap = new PriorityQueue<>(
(e1, e2) -> e1 - e2
);
for (int n : nums) {
if (heap.size() < k) {
heap.offer(n);
} else if (heap.size() == k) {
if (heap.peek() < n) {
heap.poll();
heap.offer(n);
}
}
}
return heap.peek();
}
}
本文作者:Ac_c0mpany丶
本文链接:https://www.cnblogs.com/keyongkang/p/17888573.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步