题解 | #滑动窗口的最大值#
滑动窗口的最大值
https://www.nowcoder.com/practice/1624bc35a45c42c0bc17d17fa0cba788
import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param num int整型一维数组
* @param size int整型
* @return int整型ArrayList
*/
public ArrayList<Integer> maxInWindows (int[] num, int size) {
// write code here
//创建一个单调递减队列
LinkedList<Integer> queue=new LinkedList<>();
if(size==0){
return new ArrayList<>();
}
//2,3,4,2,6,2,5,1
ArrayList<Integer> res=new ArrayList<>();
for(int i=0;i<num.length;i++){
int n=num[i];
if(i>=size&&num[i-size]==queue.peekFirst()){
queue.pollFirst();
}
while(!queue.isEmpty()&&n>=queue.peekLast()){
queue.pollLast();
}
queue.offerLast(n);
if(i>=(size-1)){
res.add(queue.peekFirst());
}
}
return res;
}
}
