day32(12.12)——leetcode面试经典150

155. 最小栈

155. 最小栈

这道题的重点是在获取更新最小值的时候,一定要加上<=,因为栈中可能为空;同时比较大小的时候要用equals来比较数值

题目:

题解:

java 复制代码
class MinStack {
    //全局对象stack和用来存储最小的元素
    private Stack<Integer> stack;
    private Stack<Integer> min_stack;

    public MinStack() {
        stack = new Stack<>();
        min_stack = new Stack<>();
    }
    
    public void push(int val) {
        stack.push(val);
        //这里要加上=,会导致min_stack为空
        if(min_stack.isEmpty() || val <= min_stack.peek()){
            min_stack.push(val);
        }
    }
    
    public void pop() {
        //如果最小的元素是当前要移除的元素
        //.equals() 比较的是数值内容
        if(stack.pop().equals(min_stack.peek())) {
            min_stack.pop();
        }
    }
    
    public int top() {
        return stack.peek();
    }
    
    public int getMin() {
        return min_stack.peek();
    }
}

/**
 * Your MinStack object will be instantiated and called as such:
 * MinStack obj = new MinStack();
 * obj.push(val);
 * obj.pop();
 * int param_3 = obj.top();
 * int param_4 = obj.getMin();
 */
相关推荐
CoderYanger3 小时前
A.每日一题:3020. 子集中元素的最大数量
java·程序人生·算法·leetcode·面试·职场和发展·学习方法
lvchaoq5 小时前
this指向面试代码输出题目合集
javascript·面试·职场和发展
wuqingshun3141596 小时前
MySQL 如何解决深度分页问题?
java·mysql·面试
weixin_727535626 小时前
JVM 常见八股面试问答:深入底层原理
jvm·面试·职场和发展
想吃火锅10057 小时前
【leetcode】5.最长回文子串js
算法·leetcode·职场和发展
CoderYanger7 小时前
A.每日一题:1967题+1331题
java·程序人生·算法·leetcode·面试·职场和发展·学习方法
ShineWinsu7 小时前
对于Linux:TCPsocket编程基础的解析
linux·网络协议·tcp/ip·面试·笔试·进程·远程指令
LoveAmySun8 小时前
关于引入双供应商调度系统的论证报告
职场和发展
胡萝卜术10 小时前
从暴力到滑动窗口的终极形态:力扣3「无重复字符的最长子串」的优化进化之路
前端·javascript·面试
触底反弹20 小时前
🔥 Git 从零到精通:彻底搞懂核心概念与工作原理
git·面试·开源