题目描述
AC代码
class Solution {
public int[] maxSlidingWindow(int[] nums, int k) {
int n=nums.length;
int[] res=new int[n-k+1];
Deque<Integer> queue=new ArrayDeque<>();
int j=0;
for(int i=0;i<n;i++){
//维护队列中的元素个数不超过k个
while(!queue.isEmpty()&&i-queue.getFirst()>=k) queue.removeFirst();
//维护队列中的最大值
while(!queue.isEmpty()&&nums[queue.getLast()]<nums[i]) queue.removeLast();
queue.addLast(i);
if(i>=k-1) res[j++]=nums[queue.getFirst()];
}
return res;
}
}