题目:
思路:
维护一个小根堆,把元素添进去,只要堆大小超过了k值,我们就进行出堆,这样留在最后的就是k个最大数据,其中堆顶就是目前k个最大数据的最小值即我们求的数组中第 k 个最大的元素。
代码:
public int findKthLargest(int[] nums, int k) {
final PriorityQueue<Integer> minHeap = new PriorityQueue<>();
for (int i = 0; i < nums.length; i++) {
minHeap.add(nums[i]);
if (minHeap.size()>k){
minHeap.poll();
}
}
return minHeap.poll();
}
网友评论