LeetCode155. 最小栈(java)

无线通信入门:3种键控法(ASK/FSK/PSK)原理图解与实战对比 本文深入解析无线通信中ASK、FSK、PSK三种基础键控法的原理与应用。通过图解对比,阐明幅移键控(ASK)简单低成本但抗干扰差,频移键控(FSK)稳健且应用广泛,相移键控(PSK)高效但复杂。文章结合实战场景,为物联网和嵌入式开发者在选型时提供关键指导,帮助平衡数据速率、成本、功耗与抗干扰需求。 阅读详情

题目:

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

push(x) – 将元素 x 推入栈中。
pop() – 删除栈顶的元素。
top() – 获取栈顶元素。
getMin() – 检索栈中的最小元素。

示例:
在这里插入图片描述
代码:

  • 解法一
class MinStack {
    private Stack<Integer> stackData;
    private Stack<Integer> stackMin;
    /** 构造方法 */
    public MinStack() {
        stackData = new Stack<Integer>();
        stackMin = new Stack<Integer>();
    }
    
    /*将元素x推入栈中*/
    public void push(int x) {
        if(stackMin.empty()) {
            stackMin.push(x);
        } else if(x <= getMin()) {
            stackMin.push(x);
        } else {
            int newMin = getMin();
            stackMin.push(newMin);
        }
        stackData.push(x);
    }
    
    /*删除栈顶元素*/
    public void pop() {
        if(stackData.empty()) {
            throw new RuntimeException("your stack is empty!");
        }
        stackMin.pop();
        stackData.pop();
    }
    
    /*获取栈顶元素*/
    public int top() {
        if(stackData.empty()) {
            throw new RuntimeException("your stack is empty!");
        }
        return stackData.peek();
    }
    
    /*检索栈中的最小元素*/
    public int getMin() {
        if(stackMin.empty()) {
            throw new RuntimeException("your stack is empty!");
        }
        return stackMin.peek();
    }
}

  • 解法二
class MinStack {
    // 支持push,pop,top的栈
    private Stack<Integer> mainStack;
    // 支持在常数时间内检索到最小元素的单调栈
    private Stack<Integer> minStack;

    /** initialize your data structure here. */
    public MinStack() {
        this.mainStack = new Stack<>();
        this.minStack = new Stack<>();
    }

    public void push(int x) {
        mainStack.push(x);
        // 实际上每次push只需要记录更小的值
        if(minStack.isEmpty() || minStack.peek() >= x)
            minStack.push(x);
    }
	//弹栈
    public void pop() {
        int tmp = mainStack.pop();
        if(tmp == minStack.peek())
            minStack.pop();
    }
	//获取栈顶元素
    public int top() {
        return mainStack.peek();
    }
	//获取最小元素
    public int getMin() {
        return minStack.peek();
    }
}

  • 别人的代码
class MinStack {
    private Deque<Integer> mainStack; // 主栈,存储所有数据
    
    private Deque<Integer> minStack; // 将数据压入主栈时,存储最小值

    /** initialize your data structure here. */
    public MinStack() {
        mainStack = new ArrayDeque<>();
        minStack = new ArrayDeque<>();
    }
    
    public void push(int x) {
        mainStack.push(x);
        
        Integer min = minStack.peek();
        if (min == null || x <= min) {
            minStack.push(x);
        }
    }
    
    public int pop() {
        int cur = mainStack.pop();
        if (cur == minStack.peek()) {
            minStack.pop();
        }
        return cur;
        
    }
    
    public int top() {
        return mainStack.peek();
    }
    
    public int getMin() {
        return minStack.peek();
    }
}

STK轨道仿真环境搭建实战:从地月系到多天体场景 本文详细介绍了STK轨道仿真环境搭建的实战指南,从基础的地月系统到复杂的多天体场景。通过逐步操作说明和实用技巧,帮助用户快速掌握STK软件的使用方法,提升轨道仿真效率,适用于航天任务设计和教学演示。 阅读详情

相关推荐

Surface Pro 4/5/6/7保姆级黑苹果安装:从Windows分区到OC引导配置全流程(含EFI文件替换避坑)

本文详细介绍了在Surface Pro 4/5/6/7上安装黑苹果的全流程,包括Windows分区、OC引导配置和EFI文件替换等关键步骤。通过实战经验分享,帮助用户避开常见陷阱,实现Windows与macOS双系统完美共存,特别适合对黑苹果安装感兴趣的Surface Pro用户。

weixin_30300225的博客 1379

Java:最小栈()

用java设计一个最小栈。​​​​​​​设计一个支持push,pop,top操作,并能在常数时间内检索到最小元素的栈。

m0_56673710的博客 487

codesys【modbusRTU】主站

【代码】modbusRTU【codesys】

cfqq1989的博客 4376

【LeetCode - Java】155. 最小栈 (简单)

目录1. 题目描述2. 解题思路3. 代码实现3.1 数组+辅助数组3.2 辅助栈(Stack)3.3 辅助栈(ArrayDeque)3.4 辅助栈(LinkedList)3.5 对比 1. 题目描述 2. 解题思路 初看这题目发现,咦?不太常规呀,这是让我撸一个栈出来吗?好像也很简单,先写吧,既然要常数时间内获取到最小值,那么除了常规存储栈的数组以外,还得需要一个辅助数组用于存储当前栈高所对应的最小值,这样就可以在常数时间内获取到了。此外,为了方便操作,可以再新增一个栈长变量,除在常规操作中可以避免反复

Beemo的博客 599

WRF后处理总结:wrf-python与NCL在WRF后处理中的基本应用——变量提取、计算与可视化

判断需要提取的变量与诊断量确定后,使用getvar函数进行提取。可使用ncdump-h命令查看wrfout中的变量,wrf中的诊断量分类也可从官方文档处查阅。判断绘图类型所需的可视化绘图类型,决定了你在WRF后处理中的计算步骤。1D点线图:ll_to_xy interpline2D填色图:interplevel3D剖面图:vinterp vertcross绘图、美化色标、XY轴、标签的设置等等。

weixin_43750300的博客 1万+

Cadence ADE实战:1GHz VCO相位噪声仿真全流程(附PSS/Pnoise避坑指南)

本文详细介绍了在Cadence ADE环境中对1GHz VCO进行相位噪声仿真的完整流程。重点剖析了PSS(周期性稳态分析)和Pnoise(周期性噪声分析)两大核心引擎的关键参数设置与避坑指南,帮助射频与模拟IC设计者准确评估VCO性能,解决仿真不收敛、结果异常等常见问题。

rock5的博客 672

LeetCode155:最小栈,最简单的中等难度题,时间击败100%,内存也低于官方

官方代码是直接使用JDK的Deque对象,这样的代码能学到什么?熟练操作API吗?还是自己实现一个最小栈吧,用时击败100%,内存击败78%

程序员欣宸的博客 1092

Transformer时间序列预测-多变量输入-单变量输出+多变量输出,完整代码数据,可直接运行

Transformer时间序列预测-多变量输入-单变量输出+多变量输出,完整代码数据,可直接运行

9794

【力扣】155. 最小栈(Java版)

其实这个错误之前我的老师强调过很多次,我在自己写一个新题目的时候还是犯了这个错误,自己看了很久,想了很久,也进行了调试都没有想明白,最后还是问了我的老师,老师说完真是感觉恍然大悟,然后紧接着的就是感到惭愧,真是学艺不精啊🙃继续努力吧,道阻且长🤦‍♀️。要想要实现在栈里查找最小元素的时间复杂度是O(1),我们容易想到的是在将元素push到栈中的同时,我们定义一个变量来存储这个最小元素,此时在需要获取最小元素的时候,我们的时间复杂度就是O(1)。int getMin() 获取堆栈中的最小元素。

2303_80341387的博客 974

游戏引擎定制化:大厂如何玩转性能极限(大白话生动有趣版)

游戏大厂如何深度定制游戏引擎?本文系统解析了商业引擎的局限性及大厂定制化的核心诉求。主要内容包括: 大厂定制引擎的根本原因:性能瓶颈、差异化需求、自有生态整合等 主流引擎的优劣势对比及适用场景 定制化重点领域:渲染管线优化、物理系统重构、网络架构改造等 全流程定制方案:从需求分析到模块重构再到工具链开发 典型案例:如腾讯CF手游的渲染优化、原神的热更新系统等 文章指出,顶级游戏产品必须对引擎核心模块动刀,通过深度定制实现性能突破和创新功能开发。同时提供了风险规避建议和技术演进趋势,为游戏开发者提供了宝贵的实

本博客聚焦游戏开发技巧、创业实战心得及大学热门课程干货。这里既有技术深度,也有思维广度,无论你是开发者、创业者还是高校学子,都能在这里找到适合自己的成长之路! 635

Open3D 机载点云电力线提取【2025最新版】

传统方法实现的机载点云电力线分割提取。博客长期更新,本文最新更新时间为:2025年3月23日。

点云侠的博客 4468

LeetCode 第155题:最小栈(Java解法)- 剑指 Offer 30. 包含min函数的栈

但是,出栈操作有可能会把最小值弹出,此时就需要更改最小值的数值,那么就需要一个辅助栈来记录每一次入栈操作时的元素最小值。而且在出栈的时候,也需要弹出辅助栈对应的元素。栈的入栈操作示意图如下,可以看到入栈操作使得最后进来的元素放在了栈的最上边,而出口只有上边一个口,所以是“因此一个合理的想法是在入栈操作的时候,就统计栈中的元素最小值。介绍完栈的一些常规操作,再来看看题目中给的示例,可能有些人一开始看不懂输入输出都是什么意思。,而如果是在调用的时候才开始遍历求元素最小值的话,那么时间复杂度是达到了。

weixin_43490422的博客 679

架构师成长之路(1)--什么是架构师

前言: 哲学家常思考的问题:" 我是谁?"" 我从哪里来?"" 要到哪里去?不只是哲学家,我想每个人都有自己对这三个问题的认知。 如果我们要成为架构师,我们自己要面临的三大问题: 找准自己定位:我是谁?在哪里? 怎样做好架构师:我要做什么? 如何搭建架构师知识体系:我该怎么做? 这里面就是做事方法论:目标(我要做什么),方法(计划)(我该怎么做), 执行/行动找准自己定位:我是谁?在哪里...

黄规速博客:学如逆水行舟,不进则退 6万+

力扣leetcode 155. 最小栈 java

class MinStack { private Stack<Integer> S; private Stack<Integer> minS; /** initialize your data structure here. */ public MinStack() { S = new Stack<Integer&g...

izhxxx的博客 318

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

《LeetCode力扣练习》第155题 最小栈 Java

《LeetCode力扣练习》第155题 最小栈 Java 一、资源 题目: 设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。 实现 MinStack 类: MinStack() 初始化堆栈对象。 void push(int val) 将元素val推入堆栈。 void pop() 删除堆栈顶部的元素。 int top() 获取堆栈顶部的元素。 int getMin() 获取堆栈中的最小元素。 示例 1: 输入: [“MinStack”,“push”,“push”

XRT_knives的博客 265

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

LeetCode 力扣155题,双栈实现最小栈——Java实现

文章目录一、题目描述二、思路分析 一、题目描述 二、思路分析 整个操作的核心就在于有一个栈永远保存的都是每次有新元素入栈时当前栈中的最小值。 首先定义两个栈,s1和s2,s2就是那个最小栈。 当栈为空的时候直接入栈,两个都入栈。 当栈不为空时,判断要入栈的元素和当前栈顶元素的大小关系; 当s2的栈顶元素 > 要入栈的元素,直接入栈; 当s2的栈顶元素 < 要入栈的元素,就把s2的栈顶元素再入一遍栈;这里是为了s2的元素个数和s1保持一致。 如果s2的元素个数和s1不一致,那么进行出栈操

回水的博客 297

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

精选力扣500题 第42题 LeetCode 155. 最小栈【c++/java详细题解】

目录1、题目2、思路3、c++代码4、java代码 1、题目 设计一个支持 push ,pop ,top操作,并能在常数时间内检索到最小元素的栈。 push(x)—— 将元素 x 推入栈中。 pop()—— 删除栈顶的元素。 top()—— 获取栈顶元素。 getMin()—— 检索栈中的最小元素。 示例: 输入: ["MinStack","push","push","push","getMin","pop","top","getMin"] [[],[-2],[0],[-3],[],[],[],[]]

林深不见鹿 的博客 2690

LeetCode 155. 最小栈:Java 双栈解法详解

设计一个支持 `push`、`pop`、`top` 操作,并能在 **常数时间** 内检索到最小元素的栈。要求所有操作的时间复杂度均为 O(1)。

weixin_44435110的博客 617

Java实现 LeetCode 155 最小栈

155. 最小栈 设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈。 push(x) – 将元素 x 推入栈中。 pop() – 删除栈顶的元素。 top() – 获取栈顶元素。 getMin() – 检索栈中的最小元素。 示例: MinStack minStack = new MinStack(); minStack.push(-2); minStack.push...

南 墙 1万+

leetcode155最小栈(JAVA版)

设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。 push(x) —— 将元素 x 推入栈中。 pop() —— 删除栈顶的元素。 top() —— 获取栈顶元素。 getMin() —— 检索栈中的最小元素。 我没有思路,参考别人的思路:栈顶如果为当前的最小值,则下面一个保存的是上一次的最小值,即次小值。 class MinStack { /** initialize your data structure here. */ private int

喂他柠檬茶的博客 273

JAVA Leetcode155. 最小栈

155. 最小栈 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/min-stack 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 题目 设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。 push(x) —— 将元素 x 推入栈中。 pop() —— 删除栈顶的元素。 top() —— 获取栈顶元素。 getMin() —— 检索栈中的最小元素。 示例: 输入: ["MinStack",

努力推石头的西西弗斯 391

Java【力扣155】最小栈

设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。 push(x) —— 将元素 x 推入栈中。 pop()—— 删除栈顶的元素。 top()—— 获取栈顶元素。 getMin() —— 检索栈中的最小元素。 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/min-stack 代码如下: class MinStack { private Stack<Integer> s1=n..

爱干饭的猿的博客 329

leetcode155 最小栈(Java)

而。

xiniii的博客 163

leetcode155——最小栈——java实现

题目要求: 分析:

阿花的IT历程 343

leetcode【每日一题】155. 最小栈 Java

我的leetcode代码都已经上传到我的git仓库https://github.com/ragezor/leetcode 题干 设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。 push(x) —— 将元素 x 推入栈中。 pop() —— 删除栈顶的元素。 top() —— 获取栈顶元素。 getMin() —— 检索栈中的最小元素。 示例: 输入: ["MinStack","push","push","push","getMin","pop","top","getM

qq_43491066的博客 176

Leetcode | 155. 最小栈(java实现)

Leetcode【栈】| 155. 最小栈题目解题题目分析两个栈实现 题目 设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。  push(x) —— 将元素 x 推入栈中。  pop() —— 删除栈顶的元素。  top() —— 获取栈顶元素。  getMin() —— 检索栈中的最小元素。 示例: 输入:  [“MinStack”,“push”,“push”,“push”,“getMin”,“pop”,“top”,“getMin”]  [  [],   [-2],

Cherils的博客 589
上一篇: LeetCode 20. 有效的括号(java)
下一篇: LeetCode21. 合并两个有序链表(Java)
inferno devil
博客等级 码龄9年 54粉丝 172原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值