LCR 059. 数据流中的第 K 大元素
题目描述
设计一个找到数据流中第 k 大元素的类(class)。注意是排序后的第 k 大元素,不是第 k 个不同的元素。
请实现 KthLargest 类:
KthLargest(int k, int[] nums)使用整数k和整数流nums初始化对象。int add(int val)将val插入数据流nums后,返回当前数据流中第k大的元素。
题解
1 |
|
第 k 大元素的理解:
第 1 大的元素—数组中最大的元素,第 2 大的元素:数组中次大的元素… 第 k 大的元素:数组中第 k 大的元素。可以发现如果想要知道第 k 大的元素,我们只需要知道数组中最大的那 k 个元素即可。那么我们可以用一个小根堆,当堆中存了 k 个元素,那么堆顶的元素就是这 k 个元素中最小的那一个。这就是这个题目的解题思路。