2pointer + 双端队列 计算区间max-min在一定范围的子数组个数


维护2个双端队列A,B。

A用来求滑动窗口的最大值,B最小值(这里的窗口大小没有限制)

假设我们窗口左边从第1位开始,右边扩到i位置时max-min大于给定的范围,那我们继续扩下去也没有必要,因为:

窗口扩张后,当前窗口的max只会比之前窗口的max大,min比之前窗口的min小。

那这时就可以求出窗口左边以第一位置开始的valid窗口的个数,就是窗口的宽度

接着左边从第一位移到第二位,此时也一定是个合理的窗口,因为:

右边扩不下去的时候,没有进行扩,这是左边右移一位,是之前的子窗口,max-min肯定满足条件

接下来就是同样的过程求以第2为开始的窗口的个数

。。。。。。


Notice:这是个sliding window(2 pointer,控制窗口大小)结合双端队列(求区间max/min)的神级题目啊

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值