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();
 */
相关推荐
LYFlied7 小时前
【每日算法】LeetCode 416. 分割等和子集(动态规划)
数据结构·算法·leetcode·职场和发展·动态规划
坚持学习前端日记8 小时前
软件开发完整流程详解
学习·程序人生·职场和发展·创业创新
萧曵 丶9 小时前
ArrayList 和 HashMap 自动扩容机制详解
java·开发语言·面试
张老师Plus11 小时前
依依东望,望的是时间
经验分享·程序人生·面试·职场和发展·跳槽
小高00711 小时前
🔥3 kB 换 120 ms 阻塞? Axios 还是 fetch?
前端·javascript·面试
千寻girling11 小时前
面试官 : “ Vue 选项式api 和 组合式api 什么区别? “
前端·vue.js·面试
就叫曲奇饼干吧12 小时前
前端面试题整理(方便自己看的)
前端·面试
Bohemian13 小时前
kafka学习笔记系列——小试牛刀
面试·kafka
不想秃头的程序员14 小时前
吃透 JS 事件委托:从原理到实战,解锁高性能事件处理方案
前端·面试