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 个最大的元素
相关推荐
学编程的闹钟1 小时前
107【php手册】
学习
盐焗西兰花10 小时前
鸿蒙学习实战之路-Reader Kit修改翻页方式字体大小及行间距最佳实践
学习·华为·harmonyos
颜酱10 小时前
图结构完全解析:从基础概念到遍历实现
javascript·后端·算法
QiZhang | UESTC10 小时前
学习日记day76
学习
久邦科技10 小时前
20个免费电子书下载网站,实现电子书自由(2025持续更新)
学习
m0_7369191010 小时前
C++代码风格检查工具
开发语言·c++·算法
yugi98783810 小时前
基于MATLAB强化学习的单智能体与多智能体路径规划算法
算法·matlab
Gain_chance10 小时前
34-学习笔记尚硅谷数仓搭建-DWS层最近一日汇总表建表语句汇总
数据仓库·hive·笔记·学习·datagrip
DuHz10 小时前
超宽带脉冲无线电(Ultra Wideband Impulse Radio, UWB)简介
论文阅读·算法·汽车·信息与通信·信号处理
Polaris北极星少女11 小时前
TRSV优化2
算法