import java.util.*; public class Solution { public ArrayList<Integer> maxInWindows(int [] num, int size) { ArrayList<Integer> result = new ArrayList<Integer>(); //注意:这里不能判断num.length==0 这种情况应该返回[] if (num == null || size == 0) { return result; } //数组的大小是n,窗口的大小是size,那么窗口的数量就是 n - size + 1 for (int windowIndex = 0; windowIndex < (num.length - size + 1); windowIndex++) { int max = num[windowIndex]; for (int windowStep = 0; windowStep < size; windowStep++) { //获取以windowIndex为起点的窗口内的最大值 max = Math.max(max, num[windowIndex + windowStep]); } result.add(max); } return result; } }