基础数据结构之队列题型

队列是一种先进先出的数据结构。

有一些题目我们需要先推导它们的性质,然后根据其性质使用队列。这种题目的难度往往较大。

蚯蚓

双端队列

单调队列问题

单调队列顾名思义,和单调栈一样,保存一堆单调递增的数据。不同的是,单调队列需要从最前面的元素开始操作,单调栈需要从最后面的元素进行操作。

最大子序和(经典题型)

题目让求连续的序列和,多半要用到前缀和。使用前缀和,问题就转化成了对于位置i,求出最小前缀和S[j],j属于[i - m, i - 1]。

我们先用一个数据结构保存[i - m, i - 1]的元素,观察有哪些性质。对于一个位置k,如果存在m < k且S[m] > S[k],那么S[m]就永远不会被用到,可以被删去。因为对于i右边的位置,会优先用比S[m]小的S[k],更何况m还小于k。这就是单调队列的由来。

结合单调栈的题型,我们发现两个问题有所关联。单调栈的问题是让求出在某个区间里第一个比a[i]小的元素,单调队列是让求出在某个区间里最小的元素。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值