优选算法-优先级队列(堆):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();
    }
}
相关推荐
罗西的思考15 小时前
机器人 / 强化学习】HIL-SERL:人类在环驱动的具身智能进化框架
人工智能·算法·机器学习
美团技术团队18 小时前
LongCat 开源 VitaBench 2.0:长期动态智能体基准新标杆
人工智能·算法
像我这样帅的人丶你还19 小时前
Java 后端详解(四):分页与搜索
java·javascript·后端
她的男孩19 小时前
数据权限为什么不能只靠注解?Forge 的 Mapper 层 SQL 改写源码拆解
java·后端·架构
tntxia20 小时前
Mybatis的日志输入
java
亦暖筑序21 小时前
Java 8老系统Browser Agent实战:三层拦截把AI操作后台变成可审计流程
java·后端·设计模式
用户298698530141 天前
Java 实现 Word 文档加密与权限解除
java·后端
Yeats_Liao1 天前
14:Servlet中的页面跳转-Java Web
java·后端·架构
未秃头的程序猿1 天前
告别"if-else地狱"!Java 21模式匹配,代码优雅了10倍
java·后端·面试
鹤望兰6751 天前
字节跳动国际支付-后端开发-三面面经
java