class Solution {
public int[] maxSlidingWindow(int[] nums, int k) {
int n = nums.length;
int index = 0;
int[] res = new int[n - k + 1];
Deque<Integer> dq =new ArrayDeque<>();
for (int i = 0; i < nums.length; i++) {
if (!dq.isEmpty() && dq.getFirst() == i - k){
dq.removeFirst();
}
while (!dq.isEmpty() && nums[dq.getLast()] < nums[i]){
dq.removeLast();
}
dq.add(i);
if (i - k >= -1){
res[index++] = nums[dq.getFirst()];
}
}
return res;
}
}
原文:https://www.cnblogs.com/linyxBlog/p/14223463.html