一,单调队列是什么(介绍)

数据结构

1.单调是数据(目前为线性表)排列的特征 ———  

每下一位的数   都比   这一位   大(或小)

好吧,再说简单一点:递增(或递减)

2.队列是这些特征存在的依托    (结构)队列都知道吧

3.还有:(其余分类)

单调队列不一定是严格递增或递减的

可以为严格单调队列非严格单调队列  (就是有没有数据值相等的情况)

e.g. 

1  2  2  3  3   是非严格单调队列    

1   2   3   4    是严格单调递增队列 

(这些都是根据场景使用的)

二,单调队列的构造

1.单调队列是队列

普通的队列内部的数据值都是不规则的

而单调队列:数据排列递增或递减(这里记作①)

2.从普通队列为空,插入时改变操作,每次插入都要保证①

那就要在新加入数据时,改变不符合的数据

就有两种情况  ——  改变新数据    或   改变原来的数据

(1).不符合就不加新数据(只操作一次)

此处逻辑如下:

//数组模拟q  l r //严格单调递增
//新数据为x
if(x<=q[r]) break;//加不了
else q[++r]=x;

(2).不符合就剔除原来的数据(可能为多次,用while或for+if)

此处逻辑如下:

while(q[r]>=x && l

(注意判断边界)

三,单调队列可以来干什么(基本应用,后续再讲其余)

在化学中,物质的性质决定它的用途

那么,在编程中,一种特殊的数据结构(此处指单调队列)的构造方法(如上)与特征就可以决定它的应用

构造后基本特征:

它能找到一组数据中最大值或最小值

可以抽象为  函数f(s,t)  ——可以找到从位置s到位置t数据中最大值或最小值

并且可以连续性递推性质,即可以由 f(s,t)与值a[t+1]推出f(s,t+1)

(而且操作简便,不怎么耗时间)

总结:(基本应用)

单调队列可以解决 线性表 连续性 递推区间 的最大/小值问题

posted on 2025-10-11 10:06  lxjshuju  阅读(13)  评论(0)    收藏  举报