Talk is cheap.不了啦,这道题还是有点难度的,用双向队列存储索引,保持队列中的递减的
func maxInWindows(nums []int, k int) []int {
res := []int{}
dq := []int{}
for i, v := range nums {
for len(dq) != 0 && nums[dq[len(dq)-1]] < v {
dq = dq[:len(dq)-1]
}
dq = append(dq, i)
if dq[0] == i - k { dq = dq[1:] }
if i + 1 >= k { res = append(res, nums[dq[0]]) }
}
return res
}