解题思路:
方法还是二叉堆。
参考 《215. 数组中的第K个最大元素》 的第一种解法。
class KthLargest {
private int k;
private PriorityQueue<Integer> pq = new PriorityQueue<>();
public KthLargest(int k, int[] nums) {
for (int i : nums) {
pq.offer(i);
if (pq.size() > k) {
pq.poll();
}
}
this.k = k;
}
public int add(int val) {
// 维护小顶堆保留前 k 大的元素
pq.offer(val);
if (pq.size() > k) {
pq.poll();
}
// 堆顶就是第 k 大元素
return pq.peek();
}
}