image.png
    注意在加入的时候,比较当前最小值和参数的大小。

    1. class MinStack {
    2. Stack<Integer> stack;
    3. Stack<Integer> min;
    4. /** initialize your data structure here. */
    5. public MinStack() {
    6. stack = new Stack();
    7. min = new Stack();
    8. }
    9. public void push(int x) {
    10. if(stack.isEmpty()){
    11. stack.add(x);
    12. min.add(x);
    13. }
    14. else{
    15. min.add(Math.min(x, min.peek()));
    16. stack.add(x);
    17. }
    18. }
    19. public void pop() {
    20. if(stack.isEmpty()) return ;
    21. stack.pop();
    22. min.pop();
    23. }
    24. public int top() {
    25. return stack.peek();
    26. }
    27. public int min() {
    28. return min.peek();
    29. }
    30. }