定义

小伙伴们都应该非常熟悉栈,栈的一个很鲜明的性质就是:先进后出 。

而所谓 单调栈 则是在栈的 先进后出 基础之上额外添加一个特性:从栈顶到栈底的元素是严格递增(or递减)

具体进栈过程如下:

  • 对于单调递增栈,若当前进栈元素为 e,从栈顶开始遍历元素,把小于 e 或者等于 e 的元素弹出栈,直接遇到一个大于 e 的元素或者栈为空为止,然后再把 e 压入栈中。

  • 对于单调递减栈,则每次弹出的是大于 e 或者等于 e 的元素。

例子

以 单调递增栈 为例进行说明。

现在有一组数

3,4,2,6,4,5,2,3

让它们从左到右依次入栈。

具体过程如下:


©著作权归作者所有:来自51CTO博客作者mb5fe18fab305a5的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. 故事:唐三藏西行之网络原理通信全过程
  2. 动画:面试必刷之二维数组中查找一个元素
  3. 【代码实战】华为应用市场专家在线直播AppGallery Connect 服务
  4. 前 K 个高频元素告诉你桶排序有啥用
  5. 可视化神器 Plotly Express 合并到 Plotly,安装过程有点小尴尬
  6. Python办公自动化|光速对比并提取两份Word/Excel中的不同元素
  7. 动画:用动画给面试官解释 TCP 三次握手过程
  8. 动画:用动画给女朋友讲解 TCP 四次分手过程
  9. 动画: 快速排序 | 如何求第 K 大元素?

随机推荐

  1. Springboot2.x整合异步任务
  2. MyBatis之Mapper XML 文件详解(三)-Resul
  3. 为什么不推荐使用finalize方法,来看看对垃
  4. MyBatis之Mapper XML 文件详解(二)-sql和
  5. 一个简单的案例帮你理解什么是SpringIOC(
  6. MYSQL认证
  7. Python对比其他语言有什么优劣势?
  8. 对职业生涯的思考
  9. 国内技术氛围到底怎么样呢
  10. Springboot整合mybatis多数据源(注解完整