思路
code
class KthLargest {
final PriorityQueue<Integer> pQueue; //声明一个堆
final int k;
public KthLargest(int k, int[] nums) {
this.k = k;
this.pQueue = new PriorityQueue<>(k); //堆的容量为k
for(int i=0;i<nums.length;i++){
add(nums[i]); //每次向堆中插入元素
}
}
public int add(int val) {
if(pQueue.size()<k){ //如果堆没满 则加入堆
pQueue.add(val);
}else if(pQueue.peek()<val){ //如果堆已经超过k则判断是否需要更新
pQueue.remove();
pQueue.add(val);
}
return pQueue.peek();
}
}