class KthLargest {
private PriorityQueue<Integer> q;
private Integer k;
public KthLargest(int k, int[] nums) {
this.k = k;
q = new PriorityQueue<>(k);
for (int num : nums) {
add(num);
}
}
public int add(int val) {
// 如果size没满,就继续加
if (q.size() < k)
q.offer(val);
// 如果满了,并且最小的小于val,就把val加进去
else if (q.peek() < val) {
q.poll();
q.offer(val);
}
return q.peek();
}
}
注:
主要考察小顶堆的用法。Java中的PriorityQueue就是小顶堆。