剑指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 @   蹇爱黄  阅读(26)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏
· Manus爆火,是硬核还是营销?
点击右上角即可分享
微信分享提示