优选算法-优先级队列(堆):75.数据流中的第K大元素

题目链接:703. 数据流中的第 K 大元素(简单)

算法原理:

解法:用堆解决Top-K问题

击败54.25%

时间复杂度O(n·logk)+O(logk)

Java代码:

java 复制代码
import java.util.PriorityQueue;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: 王洋
 * Date: 2025-09-17
 * Time: 23:17
 */
class KthLargest {
    //703. 数据流中的第K大元素
    //吴小哲的思路,多出来的扔掉
    //而我一开始的思路是拿堆顶元素依次换,就涉及到可能压根没有K个数的边界情况,处理很麻烦
    PriorityQueue<Integer> heap=new PriorityQueue<>((a, b)->(a-b));//先建立小根堆
    int _k;//获取长度
    public KthLargest(int k, int[] nums) {
        _k=k;
        for(int x:nums){
            heap.offer(x);
            if(heap.size()>k) heap.poll();
        }
    }

    public int add(int val) {
        heap.offer(val);
        if(heap.size()>_k) heap.poll();
        return heap.peek();
    }
}
相关推荐
用户112936112192 分钟前
编译全绿,上线就崩:MyBatis 五层方法名大小写埋下的坑
java
贝壳69017 分钟前
一个2026年2月才上传的库,凭什么敢碰2009年就有人写烂的题目
算法
文丑颜不良啊41 分钟前
LeetCode2901~2920题目解析
java·leetcode
码云社区43 分钟前
能碳管理系统开发要关注什么?能源数据、统计口径与AI分析的衔接
java·人工智能·ai·能源·能源管理系统·能碳管理系统·能碳管理系统源码
贝壳6901 小时前
同一道三亿位选型题,三个AI给了我三个答案,我把它们拉进同一台机器复跑
算法
Flynn Liang1 小时前
Agentic 工作流:子代理、Supervisor 与人工介入
java·langchain·多智能体·supervisor·agentic·langchain4j
xys_6781 小时前
JavaSE通关手册:运算符
java·java-ee
Yuzhiyuxia1 小时前
【AI Agent面试系列】AI Agent实战设计
人工智能·面试·职场和发展
starzy19901 小时前
深入理解Scala隐式值:编译期自动装配
开发语言·后端·scala
布莱克6052 小时前
Swift 条件语句详解:从 if 到 switch 的完整指南
开发语言·ssh·swift·switch·条件语句·guard·if