链接:155. 最小栈 - 力扣(LeetCode)

在类里面维护一个最小栈,用来记录栈顶到栈底的最小值

 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()