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
        if(size == 0 || size > num.length) return new ArrayList<>();

        ArrayList<Integer> intList = new ArrayList<>();
        int loop = num.length;
        for(int i=0; i<loop; i++){
            intList.add(num[i]);
        }

        ArrayList<Integer> targetList = new ArrayList<>();
        queryMax(intList, targetList, 0, size);

        return targetList;
    }

    void queryMax(List<Integer> intList, List<Integer> targetList, int start, int size){

        if(start + size > intList.size()) return;
        List<Integer> windowList = intList.subList(start, size + start);
        int max = Collections.max(windowList);
        targetList.add(max);
        queryMax(intList, targetList, start + 1, size);
    }

}