方法一

建立一个辅助栈,栈顶保存到当前元素的最小值

参考代码

  1. class MinStack:
  2. def __init__(self):
  3. """
  4. initialize your data structure here.
  5. """
  6. self.s = []
  7. self.s_min = [math.inf]
  8. def push(self, x: int) -> None:
  9. self.s.append(x)
  10. self.s_min.append(min(self.min(),x))
  11. def pop(self) -> None:
  12. self.s.pop()
  13. self.s_min.pop()
  14. def top(self) -> int:
  15. return self.s[-1]
  16. def min(self) -> int:
  17. return self.s_min[-1]
  18. # Your MinStack object will be instantiated and called as such:
  19. # obj = MinStack()
  20. # obj.push(x)
  21. # obj.pop()
  22. # param_3 = obj.top()
  23. # param_4 = obj.min()

复杂度分析

时间复杂度O(n)
空间复杂度O(1)