classMinStack:def__init__(self):"""
initialize your data structure here.
"""
self.stack =[]
self.min_result =[]defpush(self, x:int)->None:
self.stack.append(x)ifnot self.min_result:
self.min_result.append(x)else:if x <= self.min_result[-1]:
self.min_result.append(x)defpop(self)->None:
a = self.stack.pop()if self.min_result and a == self.min_result[-1]:
self.min_result.pop()deftop(self)->int:ifnot self.stack:return0return self.stack[-1]defgetMin(self)->int:ifnot self.min_result:return0return self.min_result[-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()
改进了一下上面的算法,删掉了一些不必要的代码。
classMinStack:def__init__(self):"""
initialize your data structure here.
"""
self.stack =[]
self.min_result =[]defpush(self, x:int)->None:
self.stack.append(x)ifnot self.min_result or x <= self.min_result[-1]:
self.min_result.append(x)defpop(self)->None:if self.stack.pop()== self.min_result[-1]:
self.min_result.pop()deftop(self)->int:return self.stack[-1]defgetMin(self)->int:return self.min_result[-1]