单调队列
顾名思义,单调队列就是具有单调性的队列,我们需要用双端队列来实现。
双端队列与普通队列的唯一区别就是它可以从两边弹出。
打个形象一点儿的比方
一群人在食堂排队打饭
这个时候来了一个新的小伙伴
这个小伙伴很霸道地想要去插队,其他小伙伴们肯定不会同意,但是打不过这个新伙伴,于是就被赶走了。
但是呢,它又打不过最前面的那个6,于是就只有乖乖地站在它后面
过了一会儿,6打完了饭离开了队列,而5还在队列中继续打饭
以上大概就是单调队列的操作规则
单调队列的应用
百度上对单调队列的解释是:
不断地向缓存数组里读入元素,也不时地去掉最老的元素,不定期的询问当前缓存数组里的最小的元素。
由于单调队列具有单调性,而且有淘汰旧元素的规则,我们通常用它来维护某个特定范围内