LeetCode热题100(最小栈)

题目描述

设计一个支持 pushpoptop 操作,并能在常数时间内检索到最小元素的栈。

实现 MinStack 类:

  • MinStack() 初始化堆栈对象。
  • void push(int val) 将元素val推入堆栈。
  • void pop() 删除堆栈顶部的元素。
  • int top() 获取堆栈顶部的元素。
  • int getMin() 获取堆栈中的最小元素。

题目思路:

java 复制代码
class MinStack {
    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);
        if(min_stack.isEmpty() || val <= min_stack.peek()){
            min_stack.push(val);
        }
    }
    
    public void pop() {
        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();
 */

利用两个栈实现,一个是正常存储数据,一个存储当前的栈中的最小值,每次push都需要更新。

相关推荐
阿杰AJie2 小时前
通用 Token 管理工具(详细注释 + 完整使用示例 + 设计说明)
java·后端·程序员
TH_12 小时前
28、powershell快速删除 node_modules
java
一 乐2 小时前
智慧医药|基于springboot + vue智慧医药系统(源码+数据库+文档)
java·前端·数据库·vue.js·spring boot·后端
vi121232 小时前
土壤与水分遥感反演技术综述:原理、方法与应用
人工智能·算法·无人机
智者知已应修善业2 小时前
【蓝桥杯龟兔赛跑】2024-2-12
c语言·c++·经验分享·笔记·算法·职场和发展·蓝桥杯
Tisfy2 小时前
LeetCode 955.删列造序 II:模拟(O(mn)) + 提前退出
算法·leetcode·字符串·题解·遍历
雨中飘荡的记忆2 小时前
享元模式深度解析:看Java如何优雅节省内存
java·设计模式
悟空码字2 小时前
SpringBoot接口防抖大作战,拒绝“手抖”重复提交!
java·spring boot·后端
im_AMBER2 小时前
Leetcode 82 每个字符最多出现两次的最长子字符串 | 删掉一个元素以后全为 1 的最长子数组
c++·笔记·学习·算法·leetcode