题目
提示:
pop
、top
和getMin
操作总是在 非空栈 上调用。
思路
要在常数时间内获得当前栈的做小元素,那么只能申请一个额外的辅助栈aux_stack,保存当前栈的最小值。
class MinStack:
def __init__(self):
"""
initialize your data structure here.
"""
self.stack = []
self.aux_stack = []
def push(self, x: int) -> None:
self.stack.append(x)
if not self.aux_stack or x <= self.aux_stack[-1]:
self.aux_stack.append(x)
def pop(self) -> None:
if self.stack.pop() <= self.aux_stack[-1]:
self.aux_stack.pop()
def top(self) -> int:
return self.stack[-1]
def getMin(self) -> int:
return self.aux_stack[-1]