Find K-th largest element in an array. and N is much larger than k.
//Version 1:minheap
public int kthLargestElement2(int[] nums, int k) {
Queue<Integer> queue=new PriorityQueue<Integer>(k);
for(int i=0;i<nums.length;i++){
if(queue.size()<k){
queue.offer(nums[i]);
}else{
if(queue.peek()<nums[i]){
queue.poll();
queue.offer(nums[i]);
}
}
}
return queue.peek();
}
//version 2:minheap
public int kthLargestElement22(int[] nums, int k){
Queue<Integer> queue=new PriorityQueue<Integer>(k);
for(int element:nums){
queue.offer(element);
if(queue.size()>k){
queue.poll();
}
}
return queue.peek();
}