优选算法-优先级队列(堆):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();
    }
}
相关推荐
希望有朝一日能如愿以偿1 小时前
力扣每日一题:能被k整除的最小整数
数据结构·算法·leetcode
Controller-Inversion1 小时前
力扣53最大字数组和
算法·leetcode·职场和发展
rit84324991 小时前
基于感知节点误差的TDOA定位算法
算法
luv_sw1 小时前
JavaSE-面向对象-抽象类和接口
java
m0_372257021 小时前
ID3 算法为什么可以用来优化决策树
算法·决策树·机器学习
TracyCoder1231 小时前
MySQL 实战宝典(八):Java后端MySQL分库分表工具解析与选型秘籍
java·开发语言·mysql
非凡的世界1 小时前
为什么我和越来越多的PHP程序员,选择了 Webman ?
开发语言·php·workman·webman
q***25212 小时前
SpringMVC 请求参数接收
前端·javascript·算法
Dream it possible!2 小时前
LeetCode 面试经典 150_图_克隆图(90_133_C++_中等)(深度优先:DFS)
c++·leetcode·面试·