单调栈
来源:互联网 发布:matlab生成小世界网络 编辑:程序博客网 时间:2024/06/13 02:34
转自http://blog.csdn.net/alongela/article/details/8227707
单调栈与单调队列很相似。首先栈是后进先出的,单调性指的是严格的递增或者递减。
单调栈有以下两个性质:
1、若是单调递增栈,则从栈顶到栈底的元素是严格递增的。若是单调递减栈,则从栈顶到栈底的元素是严格递减的。
2、越靠近栈顶的元素越后进栈。
单调栈与单调队列不同的地方在于栈只能在栈顶操作,因此一般在应用单调栈的地方不限定它的大小,否则会造成元素无法进栈。
元素进栈过程:对于单调递增栈,若当前进栈元素为e,从栈顶开始遍历元素,把小于e或者等于e的元素弹出栈,直接遇到一个大于e的元素或者栈为空为止,然后再把e压入栈中。对于单调递减栈,则每次弹出的是大于e或者等于e的元素。
一个单调递增栈的例子:
进栈元素分别为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)
以上左端为栈底,右端为栈顶。
能找到每个元素两侧最近的比他大的值(京东笔试守卫问题),使他出栈的就是右侧离他最近的比他大的值,栈中他的前一个元素就是左侧离他最近的比他大的元素。
总的来说,它的本质就是当你在插入一个值时,应将在他之前存入的所有小于他的数值剔除,再将他存入栈中。
阅读全文
0 0
- 单调栈 单调队列
- 单调栈
- 单调栈
- 单调栈
- 单调栈
- 单调栈
- 单调栈
- 单调栈
- 单调栈
- 单调栈
- 单调栈
- 单调栈
- 单调栈
- 单调栈
- 单调栈
- 单调栈
- 单调栈
- 单调栈
- android解析json数据显示
- 剑指offer数组中只出现一次的数字
- 生活中感动的点点滴滴
- 五.Gradle的基本原理
- int 和 Integer 有什么区别。请简单的写一段有关自动拆装箱的代码。
- 单调栈
- 图片无缝滚动播放
- 外卖系统(用户端App+商家端App+后端云服务器)一 [2016年文章误删恢复]
- 读写 LMDB 数据库
- c/c++动态内存管理
- android中service :remote 和start_sticky
- 天池大赛o2o优惠券第一名代码解读(4)
- 差异解惑-1
- php设计模式(二)简单工厂模式