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 个最大的元素
相关推荐
203号居民12 小时前
LeetCode hot 100 —41. 缺失的第一个正数
数据结构·算法·leetcode
专注仿真14 小时前
问答大模型技术方案算法实现-熵权法融合算法 + 交叉编码器重排算法
人工智能·python·算法·语言模型·问答大模型关键算法·熵权融合算法·交叉编码器重排算法
zjnlswd14 小时前
C#学习笔记4
笔记·学习·c#
minglie115 小时前
在linux环境烧录esp8266
学习
地平线开发者15 小时前
量化为什么会有损失:从量化误差到精度下降
算法
xqqxqxxq15 小时前
AI Agent学习:MCP与工具生态:工具选择的挑战(李博杰《深入理解 AI Agent》4.3观后总结)
人工智能·学习
青山是哪个青山16 小时前
LangChain 学习笔记(九):上下文与记忆
笔记·学习·langchain
手写码匠16 小时前
华为云Flexus+DeepSeek征文|Dify 多 Agent 会话管理与上下文工程实战:让智能体“记住该记住的,忘掉该忘掉的“
人工智能·深度学习·算法·aigc
2401_8628808216 小时前
数据结构 --- 栈
c语言·数据结构·算法
致Great16 小时前
Qwen3.8-27B 接入 DSH 全流程实测:写代码、跑长任务,都没问题
算法