题目
给定一个数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。
代码
class Solution {
public int[] maxSlidingWindow(int[] nums, int k) {
Deque<Integer> deque = new LinkedList<Integer>();
int[] array = new int[nums.length - k + 1];
for(int i = 0; i < nums.length; i++){
if(deque.isEmpty()){
deque.addLast(i);
}else{
while(!deque.isEmpty() && nums[deque.getLast()] <= nums[i]){
deque.removeLast();
}
deque.addLast(i);
if((i - deque.getFirst()) == k){
deque.removeFirst();
}
}
if((i+1) >= k){
array[i + 1 - k] = nums[deque.getFirst()];
}
}
return array;
}
}