标签
设计
堆(优先级队列)
日期
Oct 27, 2022
剑指 Offer II 059. 数据流的第 K 大数值
题目描述
设计一个找到数据流中第
k
大元素的类(class)。注意是排序后的第 k
大元素,不是第 k
个不同的元素。请实现
KthLargest
类:KthLargest(int k, int[] nums)
使用整数k
和整数流nums
初始化对象。
int add(int val)
将val
插入数据流nums
后,返回当前数据流中第k
大的元素。
示例:
题目解析
思路:
- 选用优先级队列存储数据,在初始化的时候调用
add()
方法将初始元素加入优先级队列中
add()
方法在往优先级队列中添加元素的时候判断队列中的数据个数是否大于k值,如果大于则弹出队列中最小的数据,始终保持队列首部是第k大的数值