码迷,mamicode.com
首页 > 其他好文 > 详细

155. 最小栈

时间:2020-06-19 14:02:01      阅读:50      评论:0      收藏:0      [点我收藏+]

标签:问题:   stack   输出   遍历   等于   入栈   pop   设计   top   

设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。

push(x) —— 将元素 x 推入栈中。
pop() —— 删除栈顶的元素。
top() —— 获取栈顶元素。
getMin() —— 检索栈中的最小元素。
 

示例:

输入:
["MinStack","push","push","push","getMin","pop","top","getMin"]
[[],[-2],[0],[-3],[],[],[],[]]

输出:
[null,null,null,null,-3,null,0,-2]

 

 

解题心路:

初看比较简单,于是初步规划:

1.用一个数组来表示栈 arry。

2.用一个int来表示栈顶位置,top_pos   arry[top_pos] 代表栈顶元素

3.通过移动栈顶位置来改变栈大小

4.出现问题:怎么才能快速取出最小值呢?  遍历?这太傻了。

 

 

于是高端思维出现了:

思想逻辑:

1.每次出现一个比上一个最小更小或者等于的数的时候就将这次的最下压栈,这样越靠近栈顶的元素越小,相当于维持了一个有序栈。

2.当我要出栈的元素等于栈顶元素时就将栈顶出栈,这样栈顶元素肯定是剩下的最小的。

155. 最小栈

标签:问题:   stack   输出   遍历   等于   入栈   pop   设计   top   

原文地址:https://www.cnblogs.com/xiongxinxzy/p/13162403.html

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