当前位置: 首页 > news >正文

单调栈知识点

单调栈:

1.单调栈是一种栈数据结构,只能在栈顶进行插入和删除操作

2.单调栈的特点是栈中的元素按照一定的单调性排列,常用的有单调递增和单调递减。

3.在插入新元素时,如果新元素破坏了当前的单调性,则从栈顶删除一部分元素,直到满足单调性要求。这样可以保证栈中的元素保持单调性。

4.单调栈的典型应用是在寻找下一个更大/更小元素的问题。

    

image.png

单调栈分为单调递增栈和单调递减栈两种类型:

1.单调递增栈:

栈中元素从栈底到栈顶递增。在处理序列时,当遇到一个元素时,如果该元素比栈顶元素大,就可以将栈顶元素出栈,直到栈为空或者栈顶元素大于等于当前元素。这样,栈中的元素就是在当前元素之前且比当前元素小的元素。

2.单调递减栈:

栈中元素从栈底到栈顶递减。在处理序列时,当遇到一个元素时,如果该元素比栈顶元素小,就可以将栈顶元素出栈,直到栈为空或者栈顶元素小于等于当前元素。这样,栈中的元素就是在当前元素之前且比当前元素大的元素。

使用单调栈的一般步骤如下:

(1)创建一个空栈。

(2)遍历待处理的序列,对于每个元素执行以下操作:

        1)如果当前元素比栈顶元素大(或小,取决于是递增栈还是递减栈),则持续将栈顶元素出栈,直到栈为空或者栈顶元素满足某种条件(例如比当前元素大或小)。

        2)记录弹出的元素,说明他是单调递减栈或单调递增栈第一个不满足的元素,可以在此元素根据题意进行操作

        3)如果栈不为空,比较当前元素与栈顶元素的大小:

        4)将当前元素入栈。

一个单调递减栈的例子:

进栈元素分别为3,4,2,6,4,5,2,3

3进栈:(3)

3出栈,4进栈:(4)

2进栈:(4,2)

2出栈,4出栈,6进栈:(6)

4进栈:(6,4)

4出栈,5进栈:(6,5)

2进栈:(6,5,2)

2出栈,3进栈:(6,5,3)

以上左端为栈底,右端为栈顶。

单调栈模板:

stack<int> st;

{

   if (栈空 || 栈顶元素大于等于当前比较元素)
{
入栈;
}
else
{
while (栈不为空 && 栈顶元素小于当前元素)
{
栈顶元素出栈;
更新结果;
}
当前数据入栈;

   }

}

http://www.dtcms.com/a/453924.html

相关文章:

  • 专业的肿瘤电场疗法厂家
  • 【02】VM二次开发——VisionMaster(VM)开发环境配置、工程搭建
  • 全面解析浏览器事件系统
  • 中国空间站模型网络工程专业是干什么的
  • 大型网站都怎么做推广wap网站建设案例
  • Windows文件资源管理器快速查看文件夹内所有视频总时长
  • 聊城网站营销信息一般的网站都是用什么系统做的
  • 网站搭建传媒公司网站模板
  • 关于我的cifar-10的模型跑取
  • linux进程详解
  • 【无约束优化】多维搜索——梯度方法
  • AI作为操作系统已经不能阻挡了,尽管它还没来
  • 哪个网站建设公司贵阳网站建设公司排行
  • 建设银行官方网站企业网银苏州市工程造价信息网官网
  • API 类别 - 选择器
  • 网站建设商业阶段谷歌网站提交
  • VSCode下json文件自动排版的实现(VSCODE安装美化JSON插件)
  • 深圳做网站推广公司微信小程序商城需要多少钱
  • 在Vue项目中构建后端配置的动态路由及权限控制体系
  • 鄢陵县网站苏州商城网站制作
  • grep 命令使用手册详解
  • 青岛市黄岛区城市建设局网站网站关键词百度首页消失
  • 国外服装设计网站网销网站建设流程图
  • 牛客算法_堆栈
  • 2025-10-07打包时遇到Failed to execute script pyi rth tkinter问题
  • 磁共振成像原理(理论)21:K空间采样 (Sampling of k-Space) - k空间信号的采样要求
  • 浅谈 gRPC——以 Python 项目 secure_services_py 为例
  • 2025版基于springboot的美食食品商城系统
  • SpringBoot + PostgreSQL 密码认证失败 Windows 系统解决方案
  • 辽宁朝阳网站建设公司中国铁建门户登录