单调栈

求比元素两边小的数

如序列:3 2 4 1 5 7


元素 左边 右边

3  无   2

2  无   1

4  2   1

1  无   无

5  1   无

7  5   无



解法:

维护一个栈,栈内元素递增


首先3进栈

再2准备进栈,但此时栈内元素不是递增,3先出栈。

因此2是3右边最近的比3小的元素。 

同时3出栈,3出栈后,top为空。因此3左边最近的比3小的元素不存在。   因此  3   2;


2进栈后,4准备进栈。

此时满足递增。继续下一个元素1准备进栈。

1小于栈顶元素4。因此4出栈。同时1是4右边最近最小的元素。

4出栈后,top为2。因此4左边最近的比4校的元素是2。因此 4 2 1;


总结:

元素按顺序准备进栈。

若栈顶元素大于准备进栈的元素a,则栈顶元素b弹出,并且b的右边最近小的元素是a。b左边最近最小的元素是b出栈后栈顶元素c。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值