求数据流中的第K大元素
题目
设计一个找到数据流中第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大元素相关推荐
- 从C语言的角度重构数据结构系列(七)-数据结构堆知识求解数据流中的第K大元素
前言 在这里给自己打个广告,需要的小伙伴请自行订阅. python快速学习实战应用系列课程 https://blog.csdn.net/wenyusuran/category_2239261.html ...
- ⭐算法入门⭐《堆》中等02 —— LeetCode 703. 数据流中的第 K 大元素
文章目录 一.题目 1.题目描述 2.基础框架 3.原题链接 二.解题报告 1.思路分析 2.时间复杂度 3.代码详解 三.本题小知识 四.加群须知 一.题目 1.题目描述 设计一个找到数据流中第 ...
- 703. 数据流中的第 K 大元素
703. 数据流中的第 K 大元素: 题目链接 :[703. 数据流中的第 K 大元素]https://leetcode-cn.com/problems/kth-largest-element-in- ...
- Java实现 LeetCode 703 数据流中的第K大元素(先序队列)
703. 数据流中的第K大元素 设计一个找到数据流中第K大元素的类(class).注意是排序后的第K大元素,不是第K个不同的元素. 你的 KthLargest 类需要一个同时接收整数 k 和整数数组n ...
- leetcode 703. 数据流中的第K大元素 最小堆解法 c语言
如题: 设计一个找到数据流中第K大元素的类(class).注意是排序后的第K大元素,不是第K个不同的元素. 你的 KthLargest 类需要一个同时接收整数 k 和整数数组nums 的构造器,它包含 ...
- 数据流中的第k大元素的golang实现
设计一个找到数据流中第K大元素的类(class).注意是排序后的第K大元素,不是第K个不同的元素. 你的 KthLargest 类需要一个同时接收整数 k 和整数数组nums 的构造器,它包含数据流中 ...
- leetcode 703. 数据流中的第 K 大元素(堆)
设计一个找到数据流中第 k 大元素的类(class).注意是排序后的第 k 大元素,不是第 k 个不同的元素. 请实现 KthLargest 类: KthLargest(int k, int[] nu ...
- LeetCode 703. 数据流中的第K大元素(优先队列)
1. 题目 设计一个找到数据流中第K大元素的类(class). 注意是排序后的第K大元素,不是第K个不同的元素. 你的 KthLargest 类需要一个同时接收整数 k 和整数数组nums 的构造器, ...
- 174. 地下城游戏;剑指 Offer 40. 最小的k个数;378. 有序矩阵中第K小的元素;703. 数据流中的第K大元素
一些恶魔抓住了公主(P)并将她关在了地下城的右下角.地下城是由 M x N 个房间组成的二维网格.我们英勇的骑士(K)最初被安置在左上角的房间里,他必须穿过地下城并通过对抗恶魔来拯救公主. 骑士的初始 ...
最新文章
- 论机器学习领域的内卷
- app是互联网信息服务器地址,详解如何让自己的网站/APP/应用支持IPV6访问,从域名到服务器配置...
- 最简单红米系统一键激活xposed框架教程
- Using Preferences(Beginning Android)
- UserWarning: The default mode, 'constant', will be changed to 'reflect'
- mysql 查询一个月的时间_mysql日期查询sql语句总结(查询一天,查询一周,查询一个月的数据)...
- [转载] python多重继承初始化_关于python多重继承初始化问题
- 广西教育培训网(Gxpx365)2018公务员全员培训考试参考+学法用法答案搜索工具
- 使用idea进行svn分支管理-初稿
- 开源加速器Gemmini代码解析(一):脉动阵列
- 叮当管家显示服务器错误,叮当管家【制卡器故障】
- 宝塔php伪静态规则,宝塔BT面板伪静态规则大全集合汇总
- gavin中文是什么意思_Gavin[加文,盖温]英文名的中文翻译意思、发音、来源及流行趋势-千代英文名...
- JVM,堆,栈,方法区之间的关系
- 国产服务器(麒麟操作系统),springboot应用并发访问redis数据错乱解决方案
- 【20220207】【信号处理】三次样条插值原理详解
- 从后端到前端,JavaScript和Java有关系吗
- 故障:Office 重复提示激活
- 经济管理类的顶刊和核心整理
- Teamviewer达到可使用设备数量上限: