#2667. 数据流中的第 K 大元素

数据流中的第 K 大元素

说明

设计一个找到数据流中第 kk大元素的类(classclass)。注意是排序后的第 kk 大元素,不是第k k 个不同的元素。

请实现 KthLargest 类:

●KthLargest(int k, int[] nums) 使用整数 kk 和整数流 numsnums 初始化对象。

●int add(int val) 将val val 插入数据流nums nums 后,返回当前数据流中第k k 大的元素。

输入格式

第一行:一个正整数n和k

第二行:n个用空格隔开的整数

第三行:每次数据流加入一个元素后,第k大的数

输出格式

返回当前数据流中第 kk 大的元素

样例

4 3
4 5 8 2
3 5 10 9 4
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

数据范围

1k1041 \leqslant k \leqslant 10^4

0nums.length1040 \leqslant nums.length \leqslant 10^4

104nums[i]104-10^4 \leqslant nums[i] \leqslant 10^4

104val104-10^4 \leqslant val \leqslant 10^4

最多调用 addadd 方法 10410^4

题目数据保证,在查找第 kk 大元素时,数组中至少有k k 个元素

来源

LeetCode 703