155. 最小栈
Posted xiongxinxzy
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了155. 最小栈相关的知识,希望对你有一定的参考价值。
设计一个支持 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. 最小栈的主要内容,如果未能解决你的问题,请参考以下文章
[JavaScript 刷题] 栈 - 最小栈, leetcode 155