剑指offer 包含min函数的栈

力扣题目链接

class MinStack {
    //声明两个栈 A为数据栈,B为辅助栈
    Stack<Integer> A,B;
    public MinStack() {
        //初始化栈
        A = new Stack<>();
        B = new Stack<>();
    }
    public void push(int x) {
        A.add(x);
        //保证栈B非严格降序排列,一定要写成小于等于,不然会有B为空栈的现象
        if(B.empty() || x<=B.peek()){
            B.add(x);
        }
    }
    public void pop() {
        //当A的栈顶等于B的栈顶时B才出栈,否则只有A出栈,这样能保证A和B同时出完栈即在找最小值的过程中不会出现B为空栈的情况。
        if(A.pop().equals(B.peek())){
            B.pop();
        }
    }
    public int top() {
        return A.peek();
    }
    public int min() {
        return B.peek();
    }
}

posted @ 2022-02-02 12:43  蹇爱黄  阅读(30)  评论(0)    收藏  举报