class MinStack:
def __init__(self):
"""
initialize your data structure here.
"""
self.stack1 = []
self.stack2 = []
def push(self, x: int) -> None:
self.stack1.append(x)
if not self.stack2 or x <= self.stack2[-1]:
self.stack2.append(x)
def top(self) -> int:
return self.stack1[-1] # 取元素,并没有增删
def pop(self) -> None:
# 写法一:
# if self.stack1.pop() == self.stack2[-1]: # 这里已经执行了 self.stack1.pop()
# # print(self.top())
# self.stack2.pop()
# 写法二:
x = self.stack1.pop()
# print(self.top()) # 测试而已
if x == self.stack2[-1]:
self.stack2.pop()
def min(self) -> int:
return self.stack2[-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.min()