滑动k-窗口最大值,考虑使用最大堆,java中 优先级队列PriorityQueue是最小堆实现,可以借助实现,关于 PriorityQueue可查其他资料。
class Solution {
public int[] maxSlidingWindow(int[] nums, int k) {
if (k<=0) return new int[0];
PriorityQueue<Integer> queue = new PriorityQueue<>();
for(int i=0; i<k-1; i++) {
queue.add(-nums[i]);
}
// System.out.println(map);
int[] max = new int[nums.length-k+1];
for(int i=0,j=k-1; j<nums.length; i++, j++) {
queue.add(-nums[j]);
max[i] = -queue.peek();
queue.remove(-nums[j-k+1]);
}
return max;
}
}