题解
思路
代码
class MinStack:
### 0126 最小栈(64 ms,17.8 MB)
def __init__(self):
"""
initialize your data structure here.
"""
self.stack = []
self.min_stack = []
def push(self, x: int) -> None:
self.stack.append(x)
# 当最小栈为空 or 最小栈栈顶元素大于等于x时,x入最小栈
# 注意:必须取等于!
if not self.min_stack or self.min_stack[-1] >= x:
self.min_stack.append(x)
def pop(self) -> None:
# 若待出栈元素恰好与最小栈的栈顶元素相等
# 则最小栈栈顶元素也要出栈
if self.stack.pop() == self.min_stack[-1]:
self.min_stack.pop()
def top(self) -> int:
return self.stack[-1]
def getMin(self) -> int:
return self.min_stack[-1]
# Your MinStack object will be instantiated and called as such:
# obj = MinStack()
# obj.push(x)
# obj.pop()
# param_3 = obj.top()
# param_4 = obj.getMin()