题目简介:
设计一个支持 push
,pop
,top
操作,并能在常数时间内检索到最小元素的栈。
push(x)
—— 将元素 x 推入栈中。pop()
—— 删除栈顶的元素。top()
—— 获取栈顶元素。getMin()
—— 检索栈中的最小元素。示例:
1 | 输入: |
提示:
pop
、top
和getMin
操作总是在 非空栈 上调用。
思路:
使用stack结构,设置两个栈,一个存储正常数据的栈,一个存储栈中最小数据的辅助栈,push数据时,将辅助栈的栈顶元素和当前数据进行比较,将较小值push进辅助栈,这样就能保证辅助栈的栈顶元素永远是栈中的最小元素。正常栈pop出元素时,则将辅助栈的栈顶元素也pop出即可。其他操作较为简单,直接调用函数即可。
代码如下:
1 | class MinStack { |