LeetCode算法学习之数组中的第K个最大元素

完整代码实现

java 复制代码
class Solution {
    public int findKthLargest(int[] nums, int k) {
        PriorityQueue<Integer> minHeap = new PriorityQueue<>();
        for (int num : nums) {
            minHeap.offer(num);
            if(minHeap.size() > k) {
                minHeap.poll();
            }
        }
        return minHeap.peek();
    }
}

解题思路:

最小堆的特性

最小堆:堆顶元素始终是堆中的最小值

操作时间复杂度:

插入元素(offer):O(log k)

移除堆顶(poll):O(log k)

查看堆顶(peek):O(1)

算法步骤

  1. 初始化最小堆:创建一个大小为 k 的最小堆

  2. 遍历数组:

将当前元素插入堆中

如果堆的大小超过 k,移除堆顶元素(当前最小值),确保堆中保留的是前 k 个最大元素

  1. 返回结果:遍历结束后,堆顶元素即为第 k 个最大的元素
相关推荐
吗~喽2 小时前
【LeetCode】将 x 减到 0 的最小操作数
算法·leetcode
YangYang9YangYan2 小时前
职业本科发展路径与规划指南
大数据·人工智能·学习·数据分析
what_20182 小时前
list集合使用
数据结构·算法·list
hetao17338373 小时前
2025-11-13~14 hetao1733837的刷题记录
c++·算法
hansang_IR3 小时前
【题解】洛谷 P2476 [SCOI2008] 着色方案 [记搜]
c++·算法·记忆化搜索
趙卋傑3 小时前
常见排序算法
java·算法·排序算法
AA陈超3 小时前
ASC学习笔记0010:效果被应用时的委托
c++·笔记·学习
AA陈超3 小时前
ASC学习笔记0004:通知相关方能力规格已被修改
c++·笔记·学习·游戏·ue5·游戏引擎·虚幻
阿巴~阿巴~4 小时前
IPv4地址转换函数详解及C++容器安全删除操作指南
linux·服务器·c++·网络协议·算法·c++容器安全删除操作·ipv4地址转换函数