? ? leetcode 215 数组的第K大元素。
? ?可以利用堆来解决这个问题,将数组的元素依次加入最小堆,然后如果堆的大小超过了K,则将堆顶的元素删除,这样,最后堆顶的元素就是第K大的元素,附上java的代码。
? ? ?
class Solution {
public int findKthLargest(int[] nums, int k) {
PriorityQueue<Integer> heap = new PriorityQueue<>(Comparator.comparingInt(n -> n));
for(int i = 0; i < nums.length; i++){
heap.add(nums[i]);
if(heap.size() > k){
heap.poll();
}
}
return heap.peek();
}
}