题解 | #寻找第K大#
寻找第K大
https://www.nowcoder.com/practice/e016ad9b7f0b45048c58a9f27ba618bf
import java.util.PriorityQueue;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
* @param a int整型一维数组
* @param n int整型
* @param K int整型
* @return int整型
*/
public int findKth(int[] a, int n, int K) {
// 创建小根堆
PriorityQueue<Integer> minHeap = new PriorityQueue<>();
// 添加前K个元素到小根堆
for (int i = 0; i < K; i++) {
minHeap.offer(a[i]);
}
// 遍历剩余元素
for (int i = K; i < n; i++) {
if (a[i] > minHeap.peek()) { // 如果当前元素大于堆顶元素
minHeap.poll(); // 移除堆顶元素
minHeap.offer(a[i]); // 添加当前元素
}
}
// 堆顶元素就是第K大的元素
return minHeap.peek();
}
}