这个题本来用的每次求最小值的方法,后来看了大佬的才想明白只需要每次在__minstack中记录最小,由于栈是先进后出规则,因此,小的还没有弹出的时候弹出元素不影响最小值。
class MinStack:
def __init__(self):
"""
initialize your data structure here.
"""
self.stack = []
self.__min = []
def push(self, x: int) -> None:
self.stack.append(x)
if not self.__min or x <= self.__min[-1]:
self.__min.append(x)
def pop(self) -> None:
temp = self.stack.pop()
if temp == self.__min[-1]:
self.__min.pop()
def top(self) -> int:
return self.stack[-1]
def getMin(self) -> int:
return self.__min[-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()