单调栈

文章目录

  • 定义
  • 例子
  • 题型训练⭐⭐⭐⭐⭐
  • 参考文档

定义

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

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

具体进栈过程如下:

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

例子

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

现在有一组数
3,4,2,6,4,5,2,3

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

具体过程如下:
单调栈_第1张图片

题型训练⭐⭐⭐⭐⭐

单调栈很适合求解一个数组元素i,求i的左边或者右边第一个递增或者第一个递减元素。

  1. ⭐【单调栈/哈希/暴力】LeetCode 739. Daily Temperatures 单调栈模板题

参考文档

  1. 动画:什么是单调栈?

你可能感兴趣的:(#,栈)