703. Kth Largest Element in a Stream - Easy
前往題目
想法
- 用
priority queue
思路
- 把初始
array
放進priority queue
裡面 - 每次加入的時候都先加入新的數字,然後再把
pq
刪減到剩下k
項(因為這題只有add
方法所以只要維持k
個就好,因為k
值固定所以更小的數字永遠不會用到)
Code
class KthLargest {
private int k;
private PriorityQueue<Integer> pq;
private int[] nums;
public KthLargest(int k, int[] nums) {
this.k = k;
this.nums = nums;
pq = new PriorityQueue<Integer>();
// 加入pq
for (int i = 0; i < nums.length; ++i) {
pq.add(nums[i]);
}
}
public int add(int val) {
pq.add(val);
// Remove elements until only k left
while (pq.size() > k) {
pq.poll();
}
return pq.peek();
}
}
703. Kth Largest Element in a Stream - Easy
https://f88083.github.io/2024/02/08/703-Kth-Largest-Element-in-a-Stream-Easy/