单调队列——滑动窗口最大值
- 题目描述
- 解题思路
- 单调队列
- 双端队列
- 移除最左边的元素
- 移除最右边的元素
- 在最右边插入元素
- 单调性
- 从队首到队尾单调递减
- 双端队列
- 单调队列
- 代码参考
go">func maxSlidingWindow(nums []int, k int) []int {ans := []int{}q := []int{}for i,j := range(nums){for len(q)>0 && j>=nums[q[len(q)-1]]{q = q[:len(q)-1]}q = append(q,i)if i - q[0]>=k{q = q[1:]}if i>=k-1{ans = append(ans,nums[q[0]])}}return ans
}
- tips
- go语言中的切片:动态数组,可以追加元素,直接求长度等
- 一个切片在未初始化之前默认为 nil,长度为 0