博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
简单数据结构总结——单调队列
阅读量:6882 次
发布时间:2019-06-27

本文共 583 字,大约阅读时间需要 1 分钟。

单调队列一般是具有单调性的队列废话

视具体题目而定,单调队列有单调递增和单调递减两种,一般来讲,队列的队首是整个队列的最大值或最小值

单调队列可以解决许多问题,而且可以用来优化DP,但是这里不讲因为我还不会‘

下面简单的介绍一下单调队列的实现

具体步骤:

  1.  若队列为空,将A[i]从队尾入队
  2.     若队列不为空,将比A[i]大的元素都从队尾弹出,然后把A[i]入队
  3.     若队列不为空且A[i]大于队尾,则直接从队尾把A[i]入队

实现一般采用双端队列主要因为好写当然也可以自己手写

下面放出代码

1 if(q.empty()) 2   q.push_back(A[i]); 3 else if(q.back()>A[i]){ 4   while((!q.empty())&&q.back()>A[i]){ 5     q.pop_back(); 6   } 7   q.push_back(A[i]); 8 } 9 else10   q.push_back(A[i]);

优美简洁

单调队列有许多作用:

比如可以求出一个数组内第一个大于等于一个数x的数

也可以通过维护单调性,解决一些区间内最小或最大的问题

总之单调队列的应用在根本上要视题目而定的灵活运用

本质上并不复杂

转载于:https://www.cnblogs.com/dreagonm/p/9347966.html

你可能感兴趣的文章
我的友情链接
查看>>
org.tinygroup.tinydb-数据库开发组件
查看>>
IOS绘制一个简单的表格
查看>>
【跟我学Puppet】1.7 mco 配置amq的集群
查看>>
我的友情链接
查看>>
看完9个笑话 顿悟9个人生道理
查看>>
多节点CDN缓存加速系统wdcdn2.0.1版本发布
查看>>
判断一个数是否在二维数组中
查看>>
李帅将道访武当山,拜会李光富会长
查看>>
find命令
查看>>
windows下nodejs环境配置
查看>>
服务器上出现1069错误(由于登录失败而无法启动服务)解决方法
查看>>
PostgreSQL对现有,新建的表和视图授权给用户
查看>>
找出数字x的秩(小于或等于x的值的数目)
查看>>
【管理心得之四】很小的付出,便可收获最大的工作绩效
查看>>
我的友情链接
查看>>
eclipse出现Web项目无法选择用server运行及无法导出war包的问题
查看>>
我的友情链接
查看>>
Zabbix简单的入门应用
查看>>
Fiddler 抓包工具总结(APP接口分析)
查看>>