在类里面维护一个最小栈,用来记录栈顶到栈底的最小值
1 class MinStack(object): 2 3 def __init__(self): 4 self.stack = [] 5 self.min_stack = [] 6 7 def push(self, val): 8 """ 9 :type val: int 10 :rtype: None 11 """ 12 self.stack.append(val) 13 if len(self.min_stack) != 0: 14 self.min_stack.append(min(val, self.min_stack[-1])) 15 else: 16 self.min_stack.append(val) 17 18 19 20 def pop(self): 21 """ 22 :rtype: None 23 """ 24 self.stack.pop() 25 self.min_stack.pop() 26 27 28 def top(self): 29 """ 30 :rtype: int 31 """ 32 return self.stack[-1] 33 34 35 def getMin(self): 36 """ 37 :rtype: int 38 """ 39 return self.min_stack[-1] 40 41 42 43 # Your MinStack object will be instantiated and called as such: 44 # obj = MinStack() 45 # obj.push(val) 46 # obj.pop() 47 # param_3 = obj.top() 48 # param_4 = obj.getMin()