155. 最小栈

辅助栈

import java.util.Stack;

class MinStack {

    Stack<Integer> stack;
    Stack<Integer> minStack;

    public MinStack() {

        stack = new Stack<>();
        minStack = new Stack<>();

        /**
         * 使用辅助栈,每次比较栈顶元素和入栈元素,存储最小的那个,这样主栈在入栈出栈时都会更新最小值
         * 第一个存储的是最大值
         */
        minStack.push(Integer.MAX_VALUE);
    }

    public void push(int val) {

        stack.push(val);

        /**
         * Math.min()方法选出二者最小值
         */
        minStack.push(Math.min(val, minStack.peek()));
    }

    public void pop() {

        /**
         * 同步进出栈
         */
        stack.pop();
        minStack.pop();
    }

    public int top() {
		
        return stack.peek();
    }

    public int getMin() {
		
        return minStack.peek();
    }
}

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

https://leetcode-cn.com/problems/min-stack/

posted @ 2021-10-15 10:42  振袖秋枫问红叶  阅读(37)  评论(0)    收藏  举报