题解 | #滑动窗口的最大值#
滑动窗口的最大值
http://www.nowcoder.com/practice/1624bc35a45c42c0bc17d17fa0cba788
/**
*
* @param num int整型一维数组
* @param size int整型
* @return int整型一维数组
*/
//使用双端队列
//遍历次数超过k时,就把上一个区间里的最大值删掉
//i从k-1开始,就可以把队列里的最大值加入结果数组
func maxInWindows( num []int , k int ) []int {
queue := []int{}
res := []int{}
for i := 0; i < len(num); i++ {
for len(queue) > 0 && queue[len(queue) - 1] < num[i] {
queue = queue[:len(queue)-1]
}
queue = append(queue, num[i])
if i >= k && queue[0] == num[i-k] {
queue = queue[1:]
}
if i >= k - 1 {
res = append(res, queue[0])
}
}
return res
}