专栏名称: 吴师兄学算法
和程序员小吴一起从初学者的角度学习算法,以动画的形式呈现解题的思路。每周四篇原创文章,期待你的鉴赏!
目录
相关文章推荐
于小戈  ·  前顶流小花,被爆做三?! ·  昨天  
莓辣MAYLOVE  ·  为什么说和喜欢的人睡觉是大补? ·  2 天前  
槽值  ·  杀疯了的“三亚平替”,挤满东北人 ·  2 天前  
槽值  ·  网易沸点工作室多岗位实习生招聘中 ·  2 天前  
于小戈  ·  某影后,新恋情太争气! ·  3 天前  
51好读  ›  专栏  ›  吴师兄学算法

动画:什么是单调栈?

吴师兄学算法  · 公众号  ·  · 2019-09-02 12:15

正文

点击蓝色“ 五分钟学算法 ”关注我哟

加个“ 星标 ”,天天中午 12:15,一起学算法

作者 | 程序员小吴

来源 | 五分钟学算法


定义

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

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

具体进栈过程如下:

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

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

例子

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

现在有一组数

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

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

具体过程如下:

动画描述




有话要说 👇


Q: 你在 LeetCode 中遇到过哪题需要使用单调栈来解决的?

欢迎留言与大家分享







请到「今天看啥」查看全文