优选算法-优先级队列(堆):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();
    }
}
相关推荐
用户446139430271 分钟前
从单体到微服务:我们项目的拆分思路和踩坑记录
java
雪碧透心凉_27 分钟前
while 循环与循环嵌套
开发语言·python
TDengine (老段)31 分钟前
TDengine 免费版说明
java·大数据·数据库·物联网·时序数据库·tdengine
乐观勇敢坚强的老彭34 分钟前
信奥C++一维数组笔记
开发语言·c++·笔记
码上有光35 分钟前
异常和智能指针
java·大数据·c++·servlet·异常·智能指针
变量未定义~38 分钟前
最小生成树1(Prim模板)、最小生成树2(kruskal模板)、最近公共祖先(模板)
算法
这就是佬们吗42 分钟前
Python入门⑤-异常处理、文件操作与实战项目
开发语言·数据库·python·算法·pycharm
LONGZETECH1 小时前
新能源汽车充电设备装配与调试仿真教学软件 技术架构与核心实现解析
大数据·算法·3d·unity·架构·汽车
自学小白菜1 小时前
关于提升机器学习算法做预测回归任务精度的方法分享
算法·机器学习·回归·提升精度
asdzx671 小时前
Python PDF 拆分实战指南:单页拆分与按需页码范围拆分
开发语言·python·pdf