leetcode 703. 数据流中的第 K 大元素(堆)
设计一个找到数据流中第 k 大元素的类(class)。注意是排序后的第 k 大元素,不是第 k 个不同的元素。
请实现 KthLargest 类:
KthLargest(int k, int[] nums) 使用整数 k 和整数流 nums 初始化对象。
int add(int val) 将 val 插入数据流 nums 后,返回当前数据流中第 k 大的元素。
示例:
输入:
[“KthLargest”, “add”, “add”, “add”, “add”, “add”]
[[3, [4, 5, 8, 2]], [3], [5], [10], [9], [4]]
输出:
[null, 4, 5, 5, 8, 8]
解释:
KthLargest kthLargest = new KthLargest(3, [4, 5, 8, 2]);
kthLargest.add(3); // return 4
kthLargest.add(5); // return 5
kthLargest.add(10); // return 5
kthLargest.add(9); // return 8
kthLargest.add(4); // return 8
解题思路
维护一个大小为k的小根堆,堆顶元素就是第k小的元素
代码
class KthLargest {int s;PriorityQueue<Integer> priorityQueue=new PriorityQueue<>();public KthLargest(int k, int[] nums) {s=k;for (int num : nums) {priorityQueue.add(num);}while (priorityQueue.size()>k)priorityQueue.poll();}public int add(int val) {priorityQueue.add(val);if(priorityQueue.size()>s)priorityQueue.poll();return priorityQueue.peek();}}/*** Your KthLargest object will be instantiated and called as such:* KthLargest obj = new KthLargest(k, nums);* int param_1 = obj.add(val);*/
leetcode 703. 数据流中的第 K 大元素(堆)相关推荐
- ⭐算法入门⭐《堆》中等02 —— LeetCode 703. 数据流中的第 K 大元素
文章目录 一.题目 1.题目描述 2.基础框架 3.原题链接 二.解题报告 1.思路分析 2.时间复杂度 3.代码详解 三.本题小知识 四.加群须知 一.题目 1.题目描述 设计一个找到数据流中第 ...
- Java实现 LeetCode 703 数据流中的第K大元素(先序队列)
703. 数据流中的第K大元素 设计一个找到数据流中第K大元素的类(class).注意是排序后的第K大元素,不是第K个不同的元素. 你的 KthLargest 类需要一个同时接收整数 k 和整数数组n ...
- LeetCode 703. 数据流中的第K大元素(优先队列)
1. 题目 设计一个找到数据流中第K大元素的类(class). 注意是排序后的第K大元素,不是第K个不同的元素. 你的 KthLargest 类需要一个同时接收整数 k 和整数数组nums 的构造器, ...
- leetcode 703. 数据流中的第K大元素 最小堆解法 c语言
如题: 设计一个找到数据流中第K大元素的类(class).注意是排序后的第K大元素,不是第K个不同的元素. 你的 KthLargest 类需要一个同时接收整数 k 和整数数组nums 的构造器,它包含 ...
- Leetcode 703. 数据流中的第K大元素 解题思路及C++实现
解题思路: 使用一个最小堆来存储数据,在C++中,对应是#include<queue>头文件中的priority_queue. 程序逻辑:KthLargest类初始化的时候,先根据nums ...
- 703. 数据流中的第 K 大元素
703. 数据流中的第 K 大元素: 题目链接 :[703. 数据流中的第 K 大元素]https://leetcode-cn.com/problems/kth-largest-element-in- ...
- 174. 地下城游戏;剑指 Offer 40. 最小的k个数;378. 有序矩阵中第K小的元素;703. 数据流中的第K大元素
一些恶魔抓住了公主(P)并将她关在了地下城的右下角.地下城是由 M x N 个房间组成的二维网格.我们英勇的骑士(K)最初被安置在左上角的房间里,他必须穿过地下城并通过对抗恶魔来拯救公主. 骑士的初始 ...
- 从C语言的角度重构数据结构系列(七)-数据结构堆知识求解数据流中的第K大元素
前言 在这里给自己打个广告,需要的小伙伴请自行订阅. python快速学习实战应用系列课程 https://blog.csdn.net/wenyusuran/category_2239261.html ...
- 数据流中的第k大元素的golang实现
设计一个找到数据流中第K大元素的类(class).注意是排序后的第K大元素,不是第K个不同的元素. 你的 KthLargest 类需要一个同时接收整数 k 和整数数组nums 的构造器,它包含数据流中 ...
最新文章
- R语言ggplot2可视化:使用geom_smooth函数基于lm方法为每个分组的部分数据(subset data)拟合趋势关系曲线、对指定范围的数据拟合曲线
- java shape_Java 读取shape文件
- 计算机排版高级理论知识试卷,2017年9月计算机二级考试《MS Office高级应用》操作题强化提分卷(1)...
- Avalanche发布AvalancheGo v1.2.3版本
- BZOJ 1801: [Ahoi2009]chess 中国象棋( dp )
- python os.path.splitext()的用法_Python中的os.path路径模块中的操作方法总结
- Qt 酷炫动画 PictureFlow
- 论山寨手机与Android 【6】MTK手机的基带芯片
- MLA格式应该如何正确引用?
- 非平衡电桥电阻计算_用非平衡电桥如何测量电阻_非平衡电桥测量电阻详解
- hbuilderx为什么打不开_windows系统,HBuilderX无法启动、点击无反应、或启动报错的解决方案...
- 计算机想ping一下网络,Ping命令以检测Windows7下的计算机网络速度
- Arduino作为编程器读写BIOS、bootloader、uboot或者breed
- 计算机音乐名词解释,音乐常见名词解释
- 【数据科学家】如何成为一名数据科学家?
- python查看某个函数方法具体有哪些参数怎么做
- 如何理解 0.1+0.2
- 利用MUI+个推实现APP消息推送
- 分享一款屏幕录制软件,无需安装,可直接将操作屏幕录制起来--
- python计算线段夹角