题解待更新…不动
答案
class Solution {
//使用的是双端队列
LinkedList<int[]> window = new LinkedList<>();
public int[] maxSlidingWindow(int[] nums, int k) {
if(k == 1 || nums.length == 0) return nums;
//结果数据的长度为 size -K + 1
int[] res = new int[nums.length - k + 1];
for(int i = 0; i< nums.length; i++){
int x = nums[i];
//判断窗口是否合法
if(i >= k && window.peekFirst()[1] <= i- k ){
window.pollFirst();
}
while(window.size()!=0 && window.peekLast()[0] <= x){
//一边比较一边移除
window.pollLast();
}
window.add(new int[]{x,i});
if(i >= k -1){
res[i-k+1] = window.peekFirst()[0];
}
}
//返回结果
return res;
}
}