三指针求解
初始定义窗口左边界left=0,右边界right=left+size,以及指向窗口最大值位置的指针index
窗口更新后index跟left的大小关系:
如果最大值索引index<left,说明之前的最大值不在窗口内,重新寻找最大值
否则最大值索引index>=left,说明窗口移动后最大值还在窗口里边,比较最大值跟新进窗口的值
更新当前窗口最大值,重新定位最大值索引,窗口后移

import java.util.*;
public class Solution {
    public ArrayList<Integer> maxInWindows(int [] num, int size) {
        ArrayList<Integer> list=new ArrayList();
        if(size>num.length||size==0){
            return list;
        }
        int index=-1;
        int max=-1;
        int left=0;
        int right=size-1;
        while(right<num.length){
        if(index<left){
             max=num[left];
            for(int i=left;i<=right;i++){
               if(max<num[i]){
                   max=num[i];
                   index=i;
               }
            }
        }
            else{
                if(max<num[right]){
                    max=num[right];
                }
            }
            list.add(max);
            left++;
            right++;
        }
         return list;
    }
}