package main

/**
 * 
 * @param num int整型一维数组 
 * @param size int整型 
 * @return int整型一维数组
*/
func maxInWindows( num []int ,  size int ) []int {
    if size>len(num)||size==0||len(num)==0{return nil}
    q:=[]int{}
  	// 获取第一个窗口最大值
    for i:=0;i<size;i++{
        for len(q)!=0 && num[q[len(q)-1]]<num[i]{
            q=q[:len(q)-1]
        }
        q=append(q, i)
    }
    result:=[]int{num[q[0]]}
  	// 一格一格移动窗口,将新的值添加队列,并移除下于新值数据
    for j:=size;j<len(num);j++{
        if q[0]<j-size+1{
            q=q[1:]
        }
        for len(q)!=0 && num[q[len(q)-1]]<num[j]{
            q=q[:len(q)-1]
        }
        q = append(q, j)
        result=append(result, num[q[0]])
    }
    return result
}