题目

设计一个找到数据流中第K大元素的类(class)。注意是排序后的第K大元素,不是第K个不同的元素。

你的 KthLargest 类需要一个同时接收整数 k 和整数数组nums 的构造器,它包含数据流中的初始元素。每次调用 KthLargest.add,返回当前数据流中第K大的元素。
示例:

说明:
你可以假设 nums 的长度≥ k-1 且k ≥ 1。

解法

我们可以使用 Java内部提供的优先级队列PriorityQueue,PriorityQueue是一个内部能够自动排序的队列,往PriorityQueue添加一个元素后,它能自动给整个序列重新排序,确保整个序列从队头到队尾按从小到大排列。

PriorityQueue的底层实现是一个小顶堆。

另外,题目要求找到数据流中第K大元素,我们可以限定PriorityQueue最大容量为K,这样PriorityQueue按从小到大排列之后,首元素就是我们要的元素,也就是第K大元素。

代码实现:

class KthLargest {final PriorityQueue<Integer> queue;final int k;public KthLargest(int k, int[] nums) {this.k = k;queue = new PriorityQueue<Integer>(k);for (int i: nums) {add(i);}}public int add(int val) {if(queue.size() < k) {queue.offer(val);} else if(queue.peek() < val) {queue.poll();queue.offer(val);} return queue.peek();}
}/*** Your KthLargest object will be instantiated and called as such:* KthLargest obj = new KthLargest(k, nums);* int param_1 = obj.add(val);*/

求数据流中的第K大元素相关推荐

  1. 从C语言的角度重构数据结构系列(七)-数据结构堆知识求解数据流中的第K大元素

    前言 在这里给自己打个广告,需要的小伙伴请自行订阅. python快速学习实战应用系列课程 https://blog.csdn.net/wenyusuran/category_2239261.html ...

  2. ⭐算法入门⭐《堆》中等02 —— LeetCode 703. 数据流中的第 K 大元素

    文章目录 一.题目 1.题目描述 2.基础框架 3.原题链接 二.解题报告 1.思路分析 2.时间复杂度 3.代码详解 三.本题小知识 四.加群须知 一.题目 1.题目描述   设计一个找到数据流中第 ...

  3. 703. 数据流中的第 K 大元素

    703. 数据流中的第 K 大元素: 题目链接 :[703. 数据流中的第 K 大元素]https://leetcode-cn.com/problems/kth-largest-element-in- ...

  4. Java实现 LeetCode 703 数据流中的第K大元素(先序队列)

    703. 数据流中的第K大元素 设计一个找到数据流中第K大元素的类(class).注意是排序后的第K大元素,不是第K个不同的元素. 你的 KthLargest 类需要一个同时接收整数 k 和整数数组n ...

  5. leetcode 703. 数据流中的第K大元素 最小堆解法 c语言

    如题: 设计一个找到数据流中第K大元素的类(class).注意是排序后的第K大元素,不是第K个不同的元素. 你的 KthLargest 类需要一个同时接收整数 k 和整数数组nums 的构造器,它包含 ...

  6. 数据流中的第k大元素的golang实现

    设计一个找到数据流中第K大元素的类(class).注意是排序后的第K大元素,不是第K个不同的元素. 你的 KthLargest 类需要一个同时接收整数 k 和整数数组nums 的构造器,它包含数据流中 ...

  7. leetcode 703. 数据流中的第 K 大元素(堆)

    设计一个找到数据流中第 k 大元素的类(class).注意是排序后的第 k 大元素,不是第 k 个不同的元素. 请实现 KthLargest 类: KthLargest(int k, int[] nu ...

  8. LeetCode 703. 数据流中的第K大元素(优先队列)

    1. 题目 设计一个找到数据流中第K大元素的类(class). 注意是排序后的第K大元素,不是第K个不同的元素. 你的 KthLargest 类需要一个同时接收整数 k 和整数数组nums 的构造器, ...

  9. 174. 地下城游戏;剑指 Offer 40. 最小的k个数;378. 有序矩阵中第K小的元素;703. 数据流中的第K大元素

    一些恶魔抓住了公主(P)并将她关在了地下城的右下角.地下城是由 M x N 个房间组成的二维网格.我们英勇的骑士(K)最初被安置在左上角的房间里,他必须穿过地下城并通过对抗恶魔来拯救公主. 骑士的初始 ...

最新文章

  1. 论机器学习领域的内卷
  2. app是互联网信息服务器地址,详解如何让自己的网站/APP/应用支持IPV6访问,从域名到服务器配置...
  3. 最简单红米系统一键激活xposed框架教程
  4. Using Preferences(Beginning Android)
  5. UserWarning: The default mode, 'constant', will be changed to 'reflect'
  6. mysql 查询一个月的时间_mysql日期查询sql语句总结(查询一天,查询一周,查询一个月的数据)...
  7. [转载] python多重继承初始化_关于python多重继承初始化问题
  8. 广西教育培训网(Gxpx365)2018公务员全员培训考试参考+学法用法答案搜索工具
  9. 使用idea进行svn分支管理-初稿
  10. 开源加速器Gemmini代码解析(一):脉动阵列
  11. 叮当管家显示服务器错误,叮当管家【制卡器故障】
  12. 宝塔php伪静态规则,宝塔BT面板伪静态规则大全集合汇总
  13. gavin中文是什么意思_Gavin[加文,盖温]英文名的中文翻译意思、发音、来源及流行趋势-千代英文名...
  14. JVM,堆,栈,方法区之间的关系
  15. 国产服务器(麒麟操作系统),springboot应用并发访问redis数据错乱解决方案
  16. 【20220207】【信号处理】三次样条插值原理详解
  17. 从后端到前端,JavaScript和Java有关系吗
  18. 故障:Office 重复提示激活
  19. 经济管理类的顶刊和核心整理
  20. Teamviewer达到可使用设备数量上限:

热门文章

  1. C# .NET 使用DotNetZip开源类库 处理 压缩/解压 Zip 处理乱码情况
  2. MeteoInfoLab脚本示例:MODIS Sinusoidal投影HDF数据
  3. Smali 语法文档
  4. 设计模式(八) : 结构型模式--装饰模式
  5. nginx配置SSL实现服务器/客户端双向认证
  6. exchange邮箱账号禁用之后 启用方法
  7. 博客主机_自动申请续期免费证书
  8. pythonNumpy元素特定条件查找过滤[博]
  9. AI+BI,真的如想象中的那么美好吗?
  10. 敏捷BI与数据驱动机制