剑指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();
    }
}

剑指offer 包含min函数的栈

上一篇:从面试无人问津到手拿百度offer,还原一段野生程序员的成长经历


下一篇:面试经验 | 腾讯WXG | 一二+面委+HR|已拿offer