题目:
算法思想:
使用java的优先队列,也就是堆排序。
代码:
class KthLargest {
// 堆排序解法 - 维护一个大小为k的小根堆, 若当前要插入的数小于等于堆顶元素, 则丢弃; 否则插入, 可以直接插入到堆顶, 在进行调整. 堆顶元素保存了第k大元素.
// 创建一个小根堆 - 使用PriorityQueue
PriorityQueue<Integer> heap;
int k = 0;
public KthLargest(int k, int[] nums) {
this.k = k;
heap = new PriorityQueue<Integer>(k);
for (int i : nums)
add(i);
}
public int add(int val) {
if (heap.size() < k) {
heap.offer(val);
} else if (heap.peek() < val) {
heap.poll();
heap.offer(val);
}
return heap.peek();
}
}