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();
 */
相关推荐
夕除10 小时前
Redis 过期策略
redis·笔记·面试
时间的拾荒人13 小时前
CMake 常用命令详解:从版本声明到安装部署
c++·面试
香蕉大香蕉(06敬畏市场)19 小时前
MySQL 单点详解(03)
java·数据库·mysql·面试·八股·大厂实习
道尔柯南21 小时前
C++ 内存管理详解:从 malloc/free 到 new/delete
c++·面试
CoderYanger21 小时前
Java EE 进阶:5. Spring IoC&DI(第三弹):Spring DI
java·开发语言·spring boot·spring·面试·java-ee·mvc
驭渊的小故事1 天前
LeetCode 算法题解:滑动窗口与数组合并的实战应用
算法·leetcode·职场和发展
八月的雨季 最後的冰吻1 天前
音视频面试--延迟优化
面试·职场和发展·音视频
ShineWinsu1 天前
对于Qt:QLabel常见属性的解析
c++·qt·面试·笔试·gui·标签·qlabel
Pniubi1 天前
力扣42接雨水(动态规划法)
算法·leetcode·职场和发展
weixin_307779131 天前
RAG 级联失效分析——面试中的错误归因艺术
人工智能·python·面试·职场和发展