【力扣打卡系列】单调队列
坚持按题型打卡&刷&梳理力扣算法题系列,语言为go,Day21
单调队列——滑动窗口最大值
- 题目描述
- 解题思路
- 单调队列
- 双端队列
- 移除最左边的元素
- 移除最右边的元素
- 在最右边插入元素
- 单调性
- 从队首到队尾单调递减
- 双端队列
- 单调队列
- 代码参考
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
原文地址:https://blog.csdn.net/qq_45734745/article/details/143582278
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!