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
}