题解 | 滑动窗口的最大值--维护当前窗口的状态(第一个数、第二个数、以及除第一个数以外最大的数)
滑动窗口的最大值
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 ArrayList<Integer> res = new ArrayList<>(); //隔离不合法输入 int l = 0, r = size-1; if(size-1>=num.length || size==0) return res; if(size==1) { for(int n:num) res.add(n); return res; } int curFirstNum = num[0]; int curSecondNum = num[1]; int curMaxNumOfRes = Integer.MIN_VALUE; for(int i = 1;i<size;i++){ curMaxNumOfRes = Math.max(curMaxNumOfRes,num[i]); } while(r<num.length){ curFirstNum = num[l]; curSecondNum = num[l+1]; curMaxNumOfRes = Math.max(num[r],curMaxNumOfRes); if(curFirstNum==curMaxNumOfRes){ curMaxNumOfRes = Integer.MIN_VALUE; for(int i = l+1;i<=r;i++) curMaxNumOfRes= Math.max(num[i],curMaxNumOfRes); } res.add(Math.max(curFirstNum,curMaxNumOfRes)); r++;l++; } return res; } }