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 个最大的元素
相关推荐
清泓y4 分钟前
深度学习算法
算法·ai·语言模型·面试
m沐沐24 分钟前
【深度学习】循环神经网络RNN——结构、原理与长期依赖问题解析
人工智能·pytorch·python·rnn·深度学习·算法·机器学习
Rabitebla39 分钟前
C++ 内存管理全面复习:从内存分布到 operator new/delete
java·c语言·开发语言·c++·算法·leetcode
玖玥拾1 小时前
LeetCode 58 最后一个单词的长度
算法·leetcode
LONGZETECH1 小时前
工业实训仿真设计实践:电机拆装软件的 DAG 流程建模、工具精度分级与数据体系搭建
大数据·算法·unity·架构·汽车
hanlin031 小时前
刷题笔记:力扣第19题-删除链表的倒数第N个结点
笔记·leetcode·链表
MartinYeung51 小时前
[论文学习]The Instruction Hierarchy:训练LLM优先处理特权指令
人工智能·深度学习·学习
m0_617493941 小时前
Python OpenCV 分水岭算法(Watershed)详解与实战
python·opencv·算法
海带紫菜菠萝汤1 小时前
企业批量PDF翻译方案:从选型到部署的完整指南
人工智能·算法·pdf
贵慜_Derek2 小时前
vLLM-05|MLA、Compressor、Indexer 与 SWA:Flash 注意力栈在 vLLM 里怎么落地
人工智能·算法·llm