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 个最大的元素
相关推荐
阿蒙Amon15 小时前
TypeScript学习-第1章:入门
javascript·学习·typescript
TracyCoder12315 小时前
LeetCode Hot100(15/100)——54. 螺旋矩阵
算法·leetcode·矩阵
u01092727116 小时前
C++中的策略模式变体
开发语言·c++·算法
2501_9418372617 小时前
停车场车辆检测与识别系统-YOLOv26算法改进与应用分析
算法·yolo
A9better17 小时前
嵌入式开发学习日志50——任务调度与状态
stm32·嵌入式硬件·学习
六义义18 小时前
java基础十二
java·数据结构·算法
四维碎片18 小时前
QSettings + INI 笔记
笔记·qt·算法
非凡ghost18 小时前
ESET NupDown Tools 数据库下载工具
学习·软件需求
Tansmjs18 小时前
C++与GPU计算(CUDA)
开发语言·c++·算法
zzcufo19 小时前
多邻国第5阶段17-18学习笔记
笔记·学习