48 lines
1.0 KiB
Python
48 lines
1.0 KiB
Python
class MinStack(object):
|
|
def __init__(self):
|
|
self.stack = []
|
|
|
|
def push(self, val):
|
|
if not self.stack:
|
|
self.stack.append((val, val))
|
|
else:
|
|
mn = min(self.stack[-1][1], val)
|
|
self.stack.append((val, mn))
|
|
# print(self.stack)
|
|
|
|
def pop(self):
|
|
if self.stack:
|
|
# print(self.stack)
|
|
self.stack.pop()
|
|
|
|
def top(self):
|
|
if self.stack:
|
|
# print(self.stack)
|
|
return self.stack[-1][0]
|
|
return 0
|
|
|
|
def getMin(self):
|
|
if self.stack:
|
|
# print(self.stack)
|
|
return self.stack[-1][1]
|
|
return 0
|
|
|
|
|
|
minStack = MinStack()
|
|
minStack.push(-2)
|
|
minStack.push(0)
|
|
minStack.push(-3)
|
|
minStack.push(4)
|
|
minStack.getMin() # return -3
|
|
minStack.pop()
|
|
minStack.top() # return 0
|
|
minStack.getMin() # return -2
|
|
|
|
|
|
|
|
# Your MinStack object will be instantiated and called as such:
|
|
# obj = MinStack()
|
|
# obj.push(val)
|
|
# obj.pop()
|
|
# param_3 = obj.top()
|
|
# param_4 = obj.getMin() |