剑指 Offer 59 - I. 滑动窗口的最大值
class Solution {
public int[] maxInWindows(int[] nums, int k) {
if(nums == null || nums.length == 0) return new int[0];
int[] res = new int[nums.length - k + 1];
Deque<Integer> q = new LinkedList<>();
int j = 0;
for(int i = 0; i < nums.length; i ++){
if(!q.isEmpty() && i - q.peek() >= k){
q.poll(); //弹出第一个
}
while(!q.isEmpty() && nums[i] >= nums[q.peekLast()]){
q.pollLast(); //保持单调队列
}
q.offer(i); //入队
if(i >= k - 1){
res[j++] = nums[q.peek()]; //res更新
}
}
return res;
}
}