题解 | #滑动窗口的最大值#
滑动窗口的最大值
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; } }