LeetCode Hot 100 优先队列
- 堆
- 必须是一个完全二叉树
- 大根堆/小根堆
- 堆顶元素必须大于或小于左右节点
- 建堆的过程
- 上滤/下滤
- 堆的应用
- 优先队列
- 堆排序
- PriorityQueue
- 初始化时传入一个Comparator接口
lc 239
class Solution {
public int[] maxSlidingWindow(int[] nums, int k) {
PriorityQueue<int[]> queue = new PriorityQueue<>(new Comparator<int[]>() {
@Override
public int compare(int[] o1, int[] o2) {
if(o1[0] != o2[0])
return o2[0] - o1[0];
else
return o1[1] - o2[1];
}
});
int[] ans = new int[nums.length - k + 1];
for(int i=0;i<k;++i)
queue.offer(new int[]{nums[i],i});
ans[0] = queue.peek()[0];
for(int i=k;i<nums.length;++i) {
queue.offer(new int[]{nums[i], i});
while (queue.peek()[1] <= i-k)
queue.poll();
ans[i - k + 1] = queue.peek()[0];
}
return ans;
}
}