自学内容网 自学内容网

【力扣打卡系列】单调队列

坚持按题型打卡&刷&梳理力扣算法题系列,语言为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)!