数据流中的第K大元素(java实现)
力扣 703. 数据流中的第 K 大元素
题目说明
设计一个找到数据流中第 k 大元素的类(class)。注意是排序后的第 k 大元素,不是第 k 个不同的元素。
请实现 KthLargest 类:
- KthLargest(int k, int[] nums) 使用整数 k 和整数流 nums 初始化对象。
- int add(int val) 将 val 插入数据流 nums 后,返回当前数据流中第 k 大的元素。
示例
例1
1 | 输入: |
例2
1 | 输入: |
笔者理解
此题是一道设计类算法问题,在力扣题库中被定义为简单题。
解法
当笔者阅读完此题后,发现此题如果用上优先队列便可很快设计完成,因为优先队列本身是一个最小生成树的结构,此时我们只需要保持优先队列的长度不变即可。
优先队列可以了解博客园Elliott_Su:https://www.cnblogs.com/Elliott-Su-Faith-change-our-life/p/7472265.html
实现
1 | class KthLargest { |
时间和空间效率都较高,可见此解法比较适合此题;
总结
本题是今天的每日一题,难度是简单,感兴趣的朋友都可以去尝试一下,此题还有其他更多的解法,朋友们可以自己逐一尝试。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 徐年の博客!







