TreeMind树图在线AI思维导图
当前位置:树图思维导图模板高校与高等教育其他学科单调队列思维导图

单调队列思维导图

  收藏
  分享
免费下载
免费使用文件
U125568174 浏览量:22023-03-28 19:58:25
已被使用0次
查看详情单调队列思维导图

单调队列知识梳理

树图思维导图提供 单调队列 在线思维导图免费制作,点击“编辑”按钮,可对 单调队列  进行在线思维导图编辑,本思维导图属于思维导图模板主题,文件编号是:2192b98136a365d9abec76d523968818

思维导图大纲

单调队列思维导图模板大纲

定义

对于求在一个数组内,求一定区间的最值时, 如果一个数大于他,还在他后面的话,这个数 就不会被取到,可以弹出队列。正所谓:当别人又比你小有比你强,你就啥也不是

例题

刘老师食蛋挞

思路

通过一个单调队列,保证最新鲜最美味的蛋挞 在第一位,每次只需要输出第一位即可,并且每次循环开始将过期的蛋挞抛出队列,始终保持队列内蛋挞在保质期内

实现

for(int i=2;i<=n;i++){ if(i-q[head]>=m) head++; while(head<=tail && a[q[tail]]<=a[i]) tail--; tail++,q[tail]=i; cout<<a[q[head]]<<" "; }

滑动窗口

思路

和上一题类似,只需要两个单调队列分别存储最大最小值即可

实现

for(int i=2;i<=m;i++){ if(i-q1[head1]>=n) head1++; if(i-q2[head2]>=n) head2++; while(head1<=tail1&&a[q1[tail1]]<=a[i]) tail1--; while(head2<=tail2&&a[q2[tail2]]>=a[i]) tail2--; tail1++,q1[tail1]=i; tail2++,q2[tail2]=i; if(i>=n){ ans++; ans1[ans]=a[q1[head1]];ans2[ans]=a[q2[head2]]; } }

二维单调队列

思路

可以开辟两个单调队列,一个横向,一个竖向,分别求出每一行每一列的最大/小值

实现

for(int i=1;i<=n;i++){ head=tail=q[1]=1; for(int j=2;j<=m;j++){ if(j-q[h]>=z) h++; while(s[i][j]>=s[i][q[tail]]&&head<=tail) tail--; tail++;q[tail]=j; if(j>=z) x[i][j-z+1]=s[i][q[head]]; } } for(int i=1;i<=m-z+1;i++){ head=tail=q[1]=1; for(int j=2;j<=n;j++){ if(j-q[h]>=z) h++; while(x[i][j]>=x[i][q[tail]]&&head<=tail) tail--; tail++;q[tail]=j; if(j>=z) y[i-z+1][j]=x[i][q[head]]; } }

相关思维导图模板

早期接触农业、生物多样性和绿地与炎症性肠病风险之间的关系:一项基于人群的队列研究思维导图

树图思维导图提供 早期接触农业、生物多样性和绿地与炎症性肠病风险之间的关系:一项基于人群的队列研究 在线思维导图免费制作,点击“编辑”按钮,可对 早期接触农业、生物多样性和绿地与炎症性肠病风险之间的关系:一项基于人群的队列研究  进行在线思维导图编辑,本思维导图属于思维导图模板主题,文件编号是:75be218ffb126e173bd37cfbce4760ff

栈和队列的应用思维脑思维导图

树图思维导图提供 栈和队列的应用思维脑 在线思维导图免费制作,点击“编辑”按钮,可对 栈和队列的应用思维脑  进行在线思维导图编辑,本思维导图属于思维导图模板主题,文件编号是:a1fbcbaa0d1a723bbeca8cfdb13cfea7