1. class MinStack(object):
    2. def __init__(self):
    3. """
    4. initialize your data structure here.
    5. """
    6. self.stack = []
    7. self.min_stack = []
    8. def push(self, x):
    9. """
    10. :type x: int
    11. :rtype: None
    12. """
    13. self.stack.append(x)
    14. if self.min_stack == []:
    15. self.min_stack.append(x)
    16. else:
    17. val = min(x, self.min_stack[-1])
    18. self.min_stack.append(val)
    19. def pop(self):
    20. """
    21. :rtype: None
    22. """
    23. self.stack.pop(-1)
    24. self.min_stack.pop(-1)
    25. def top(self):
    26. """
    27. :rtype: int
    28. """
    29. return self.stack[-1]
    30. def min(self):
    31. """
    32. :rtype: int
    33. """
    34. return self.min_stack[-1]
    35. # Your MinStack object will be instantiated and called as such:
    36. # obj = MinStack()
    37. # obj.push(x)
    38. # obj.pop()
    39. # param_3 = obj.top()
    40. # param_4 = obj.min()