class Solution {
public int[] maxSlidingWindow(int[] nums, int k) {
if(nums == null || nums.length == 0) return new int[0];
int[] result = new int[nums.length - k + 1];
Deque<Integer> queue = new ArrayDeque();
// i:记录nums j:记录result
for(int i = 0, j = 0; i < nums.length; i++){
// poll():查看后删除 pop():只查看不删除
// 数量大于滑动窗口大小,去掉多余的
if(!queue.isEmpty() && i - queue.peek() >= k) queue.poll();
// 找到最大值,注意得是peekLast和poolLast,nums[i]>后面的
while(!queue.isEmpty() && nums[i] > nums[queue.peekLast()]) queue.pollLast();
queue.add(i);
if(i >= k - 1) result[j++] = nums[queue.peek()];
}
return result;
}
}