题目描述
实现一个特殊功能的栈,在实现栈的基本功能的基础上,再实现返回栈中最小元素的操作。
示例1
输入
1 | [[1,3],[1,2],[1,1],[3],[2],[3]] |
返回值
1 | [1,2] |
备注:
1 | 有三种操作种类,op1表示push,op2表示pop,op3表示getMin。你需要返回和op3出现次数一样多的数组,表示每次getMin的答案 |
双栈
普通栈保存所有的数字
最小栈保存当前最小的数字
最小栈入栈规则:
如果当前的栈为空,那么入栈
如果当前的数字大于栈顶元素,不入栈
如果当前的数字小于等于栈顶元素,入栈
1 | import java.util.*; |
155. 最小栈
难度简单893
设计一个支持 push
,pop
,top
操作,并能在常数时间内检索到最小元素的栈。
push(x)
—— 将元素 x 推入栈中。pop()
—— 删除栈顶的元素。top()
—— 获取栈顶元素。getMin()
—— 检索栈中的最小元素。
示例:
1 | 输入: |
提示:
pop
、top
和getMin
操作总是在 非空栈 上调用。
1 | class MinStack { |