首页 > 其他 > 详细

最小栈

时间:2020-04-12 11:07:10      阅读:40      评论:0      收藏:0      [点我收藏+]

最小栈可以用数组实现, 如果是java, 可以用remove方法删除元素, 同时用另一个数组去维护一个递减的栈即可.

最小栈也可以只是用一个数组(或者build-in的栈)来实现, 思路是,
维护一个min变量 => 备注: 遇到空间优化的问题时, 比如从一维数组优化, 通常就是创建变量. 不断更新该变量, 变成重复利用.
每次遇到比min小的变量时, 先入栈min, 再入栈该数.
初始化时, min是最大值.

例如:
5 4 3 3

min=MAX_VALUE
MAX_VALUE 5
min=5
MAX_VALUE 5 5
min=4
MAX_VALUE 5 5 4 4
min = 3
MAX_VALUE 5 5 4 4 3
min = 3
MAX_VALUE 5 5 4 4 3 3 3

当pop的时候
3 == min
pop()
5 5 4 4 3 3
min = peek()
pop()
5 5 4 4 3
3 == min
pop()
min = peek()
pop()
5 5 4
4 == min
pop()
min = peek()
pop()
5
min == 5
pop()
min=peek()
pop()

变为空.

最小栈

原文:https://www.cnblogs.com/ctrlzhang/p/12683970.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!