码迷,mamicode.com
首页 > 编程语言 > 详细

基础算法复习——单调栈

时间:2016-10-07 01:10:10      阅读:186      评论:0      收藏:0      [点我收藏+]

标签:

单调栈:

单调栈非常容易理解,因为栈只能从一个方向进出。

单调栈的作用主要是可以找到一个数左边或右边第一个比它大或比它小的数。

下面以找出一个数左边第一个比它大的数为例。

举一列数:3,7,4,9,2,1

从左向右进行循环,(注意:入栈的是数组下标。在第一个元素入栈之前先把0入栈,在这里把a[0]的值设为无穷大)

对a[1],3比无穷大小,所以ans[1]=0,1入栈。

对a[2],7比3大,3出栈,所以ans[2]=0,2入栈

......

以此类推

Code:

技术分享
1 for (int i=1; i<=n; i++)
2     {
3         while (a[s.top()]<=a[i]) s1.pop();
4         ans[i]=s1.top();               //向前看第一个大于它。 
5             s1.push(i);
6     }
View Code

 

基础算法复习——单调栈

标签:

原文地址:http://www.cnblogs.com/Robinson828/p/5935146.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!