一、题目内容
二、题解
解法1:
思路
单调栈
public class Solution { public ArrayList<Integer> maxInWindows(int [] num, int size) { ArrayList<Integer> ans = new ArrayList<Integer>(); if (num.length == 0 || size == 0) { return ans; } //单调栈 Deque<Integer> deque = new LinkedList<>(); int left,right; for (left = 1-size, right = 0; right < num.length; left++,right++) { // 删除 deque 中对应的 nums[left-1] if(left>0 && deque.peekFirst() == num[left-1]){ deque.removeFirst(); } // 保持 deque 递减 while(!deque.isEmpty() && deque.peekLast()<num[right]){ deque.removeLast(); } deque.add(num[right]); if(left>=0){ ans.add(deque.peekFirst()); } } return ans; }}