1、仔细读题,分析题意,两件事:最大值、数组分组
2、不管三七二十一,既然要最大值,那就先把最大值的函数写出来,根据题意,是将分组后的数组传递到最大值函数,返回最大值。(即使写不出来别的思路,至少完成了一部份,对吧,我想应该是加分的吧)
3、数组分组,我是根据数组下标来分组的,初始的分组,借鉴String函数中分字符串的思想,就是传递下标值,然后返回分组,那我这里没有重新再写一个函数。
下标值两个变化:
1、数组的起始下标top=0
2、数组的结束下标end = size
3、分组结束的标值,就是结束下标和数组的长度相等了,说明已经分到最后一组了
接下来看代码就懂了,一定要注意最后结束的条件,还有就是返回值,不能和自己返回一个null,我犯了这么个错误

import java.util.*;
public class Solution {
    public ArrayList<Integer> maxInWindows(int [] num, int size){
         ArrayList<Integer> list = new ArrayList<>();
        if(size == 0 || num == null || size > num.length){
            return list;
        }

        int top = 0;
        int end = size;
        while(end <= num.length){
            int[] arr = new int[size];
            int i = 0;
            int t = top;
            while(t < end){
                arr[i] = num[t];
                i++;
                t++;
            }
            list.add(Max(arr));
            top++;
            end++;
        }
        return list;
    }
    public int Max(int[] arr){
        int max = arr[0];
        for(int i = 1; i< arr.length ;i++){
            if(max < arr[i]){
                max = arr[i];
            }
        }
        return max;
    }
}