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();
 */
相关推荐
做怪小疯子1 天前
蚂蚁暑期 319 笔试
算法·职场和发展
Moment1 天前
前端工程化 + AI 赋能,从需求到运维一条龙怎么搭 ❓❓❓
前端·javascript·面试
独自破碎E1 天前
【面试真题拆解】你知道ThreadLocal是什么吗
java·jvm·面试
memcpy01 天前
LeetCode 1456. 定长子串中元音的最大数目【定长滑窗模板题】中等
算法·leetcode·职场和发展
玛丽莲茼蒿1 天前
LeetCode hot100【相交链表】【简单】
算法·leetcode·职场和发展
我真会写代码1 天前
Spring面试高频题:从基础到源码,通俗拆解+避坑指南
java·spring·面试
xlp666hub1 天前
从零点亮 RK3568 的 LED:设备树,平台总线,现代gpio子系统全解析(附完整代码)
linux·面试
Fairy要carry1 天前
面试08-“生产者-消费者” 模型实现并发 Agent
python·面试
零雲1 天前
java面试:Spring事务失效的场景有哪些?
java·数据库·面试
发现一只大呆瓜1 天前
React-深度拆解 React路由:从实战进阶到底层原理
前端·react.js·面试