栈----2.最小栈

【数据结构练习题】栈——1.括号匹配 2.逆波兰表达式求值 3.出栈入栈次序匹配 4.最小栈 在学习数据结构的过程中遇到了各种各样类型的题目,我在解答这些题目的时候收获了不少,所以我想开设一个专栏来分享我平时做题的收获,在我分享的题中我采用三步法来阐述,希望大家可以在我的文章有收获,并且能够在评论区中积极讨论更多的解题方法。 阅读详情

155. 最小栈 - 力扣(LeetCode)

/**

        相较于传统的栈额外需要常数级时间复杂度获取栈中最小值

        双栈法:

            主栈,普通栈的功能,push、pop、top均在主栈进行

            辅助栈,记录当前状态主栈的最小值,即每当主栈状态发生改变时,辅助栈也要做相应更改

        辅助栈:

            push操作: 判断push后主栈的最小值,即辅助栈栈顶元素与待添加元素相比,将较小的值加入辅助栈中

            pop操作: 辅助栈也做相应pop操作,即减少一个状态

*/

class MinStack {
    /**
        相较于传统的栈额外需要常数级时间复杂度获取栈中最小值
        双栈法:
            主栈,普通栈的功能,push、pop、top均在主栈进行
            辅助栈,记录当前状态主栈的最小值,即每当主栈状态发生改变时,辅助栈也要做相应更改
        辅助栈:
            push操作: 判断push后主栈的最小值,即辅助栈栈顶元素与待添加元素相比,将较小的值加入辅助栈中
            pop操作: 辅助栈也做相应pop操作,即减少一个状态
    */

    //主栈
    private Deque<Integer> stack;
    //辅助栈
    private Deque<Integer> minStack;

    public MinStack() {
        stack = new ArrayDeque<>();
        minStack = new ArrayDeque<>();
    }
    
    //主栈直接添加,辅助栈保存当前状态主栈最小值
    public void push(int val) {
        //主栈直接添加元素
        stack.push(val);

        //辅助栈添加当前主栈状态的最小值
        if(minStack.isEmpty() || val <= minStack.peek()) {
            minStack.push(val);
        } else {
            minStack.push(minStack.peek());
        }
    }
    
    //删除主栈元素的同时,弹出主栈顶部元素
    public void pop() {
        stack.pop();
        minStack.pop();
    }
    
    public int top() {
        return stack.peek();
    }
    
    public int getMin() {
        return minStack.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();
 */

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

相关推荐

Halcon窗体开发避坑指南:C#自定义控件实现7大图像交互功能

本文详细介绍了如何利用C#封装自定义Halcon控件,以解决原生HWindowControl功能不足的问题。通过实战代码,展示了如何实现图像按比例显示、鼠标拖动缩放、灰度值读取、图像保存、截图及图形叠加等七大核心交互功能,并重点剖析了内存管理、坐标转换等开发避坑要点,帮助开发者构建稳定可复用的机器视觉组件库。

weixin_29251131的博客 292

最小栈解法2

此处解法为,构造结构体时增加一个min。这个方法可以作为一种思路,在以后应该也会用的上,改造结构体。代码附上,另外,有一个问题,若要取一个int最大的值,不能一直999999999999999999,int最大值是有规定的,是2147483647。 typedef struct StackNode{ int data; int min; struct StackNode*next; } MinSt...

c1042503039的博客 182

【模拟电子设计实战】开源!基于Multisim与AD620的心电采集电路仿真与优化

本文详细介绍了基于Multisim与AD620的心电采集电路仿真与优化实战。通过分析心电信号采集的挑战,重点讲解了AD620仪表放大器和OP07运算放大器的选型优势及电路设计技巧,包括对抗50Hz工频干扰和基线漂移的优化方法。文章还分享了Multisim仿真参数设置与实测对比经验,最终实现性能达标的心电采集电路设计。

weixin_30555125的博客 96

3.2 栈的最小值

     《程序员面试金典》(第六版)习题:仅为记录一下以加强印象,不为商业用途,如有侵权请联系删除。以下源码和解释参考了书中源码以及解释。      以下算法通过在栈中的每一个节点存储节点值以及当该节点为栈顶时整个栈的最小值,实现了求栈中最小值的函数int  minimum()int \;mini...

caoleiwe的博客 296

把STM32MP135当单片机玩:实战SD卡脱机运行LED程序(基于MP135DK开发板)

本文详细介绍了如何在STM32MP135开发板上实现SD卡脱机运行LED程序,通过裸机开发方式(Bare Metal)利用HAL库完成GPIO控制,并解析了SD卡启动流程。内容涵盖工程创建、代码编写、SD卡烧录及常见问题排查,为开发者提供了一种高性能单片机开发方案。

weixin_33734785的博客 242

《ESP32单片机基础入门》第2章:开发环境搭建

【代码】《ESP32单片机基础入门》第2章:开发环境搭建。

2301_79143213的博客 582

编程之美系列之栈和队列2—在O(1)的时间内得到队列的最大或者最小值

上一篇博客http://blog.csdn.net/kay_zhyu/article/details/8869542中提到,在O(1)的时间内取得栈的最大或者最小值,作法是利用一个辅助栈去动态的维护这个最小值。但是如果要在O(1)的时间内取得队列的最小值,那这就有点难办的吧。毕竟队列的操作特点是先进先出,跟栈的完全相反的,我们没办法像栈那要用一个动态的数组去维护这个最小值。怎么办呢?既然栈的最小值

kay_zhyu的专栏 4100

Xiaojie雷达之路---手把手教你从串口获取雷达原始数据(一)---新建工程(开始)

Hello,大家好,我是Xiaojie,欢迎大家能够和Xiaojie来一起学习毫米波雷达知识,Xiaojie准备连载一个系列的文章---利用串口获取毫米波雷达中的原始数据,本系列文章将从新建工程到最后原始数据显示到PC上进行逐步介绍,这个系列的文章大约是一个4-5篇左右。本篇文章呢,主要讲的是如何新建一个毫米波雷达的工程。

XiaoJie的博客 5810

作业2:最小栈

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

weixin_51696983的博客 94

Unity实战篇 | 教你怎样将Unity的启动Logo 设置成 自己制作的 帧动画

上一篇文章我们讲了怎样在不购买专业版的情况下自定义Unity的启动Logo。 那本篇文章就来介绍一下,怎样在去除默认Logo的前提下制作自己的启动动画!

努力前行,总会成为自己心中的那道光 6万+

SAP-ABAP:在SAP系统中,COEP表(成本控制对象行项目表)详解

在SAP系统中,COEP表(成本控制对象行项目表)详解

baidu_35680696的博客 1840

❤leetcode,python2❤最小栈

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

我去热饭的博客 184

【华为OD机试真题】65、高矮个子排队 | 机试真题+思路参考+代码解析 (C++、Java、Py、C语言、JS)

题目描述 >现在有一队小朋友,他们高矮不同,我们以正整数数组表示这一队小朋友的身高,如数组{5,3,1,2,3}。 >  我们现在希望小朋友排队,以"高" "矮" "高" "矮" 顺序排列,每一个高位置的小朋友要比相邻的位置高或者相等;每个 "矮" 位置的小朋友要比相邻的位置矮或者相等; >  要求小朋友们移动的距离和最小,第一个从“高"位开始排,输出最小移动距离即可。 >  例如,在示范小队{5,3,1,2,3}中, {5, 1, 3, 2, 3}是排序结果。 > 

KJ.JK 2102

【小白爬Leetcode155】2.3 最小栈 Min Stack

【小白爬Leetcode155】2.3 最小栈 Min Stack题目Description中文描述思路一 额外用一个stack来记录每一个状态下栈的最小值思路二 每次push两个值思路三 用链表来实现栈 Leetcode 232 esay\color{#228B22}{esay}esay 点击进入原题链接:Leetcode155 最小栈 Min Stack 题目 Description Design a stack that supports push, pop, top, and retrievi

weixin_41604040的博客 176

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

【设计】c_lc_实现最小栈(2 × 栈 / (更优代办...))

《最小栈》 一、特点 后入先出的数据结构 二、实现普通栈 class MyStack { private List<Integer> data; \\store elements public MyStack() { data = new ArrayList<>(); } \\Insert an element int...

无敌兔0x01 342

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Java 1.队列实现栈 2.栈实现队列 3.实现最小栈

高频面试题! 1.用队列实现栈 使用队列实现栈的下列操作: push(x) – 元素 x 入栈 pop() – 移除栈顶元素 top() – 获取栈顶元素 empty() – 返回栈是否为空 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/implement-stack-using-queues //定义两个队列实现栈 Queue<Integer> queue1 = new LinkedList<>(); Que

unstoppable_t的博客 238

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

2.26 栈的巩固 最小栈 逆波兰表达式求值 有效的括号 验证栈序列

本文介绍了利用栈结构解决的四个算法问题:1.有效的括号(使用栈匹配括号);2.逆波兰表达式求值(数字入栈,运算符出栈计算);3.最小栈(辅助栈维护最小值);4.验证栈序列(模拟出入栈过程)。文章指出这些题目虽然难度不大,但需要掌握栈的LIFO特性,并注意边界条件处理。作者表示因时间有限仅提供基础解法,最后强调理解栈的性质是解题关键。

2302_79054971的博客 370

[CareerCup] 3.2 Min Stack 最小栈

  3.2 How would you design a stack which, in addition to push and pop, also has a function min which returns the minimum element? Push, pop and min should all operate in O(1) time.   LeetCode上的原题,请...

weixin_33904756的博客 86

最小栈

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

翟黎明的博客 204

155. Min Stack(最小栈)

题目链接 Design a stack that supports push, pop, top, and retrieving the minimum element in constant time. push(x) – Push element x onto stack. pop() – Removes the element on top of the stack. top() – Get...

王小平 448

cci-Q3.2 设计栈可以返回最小值

原文: How would you design a stack which, in addition to push and pop, also has a function min which returns the minimum element? Push, pop and min should all operate in O(1) time. 译文: 实现一个栈,除了

小象吃西瓜 1205

左神算法基础class3—题目2返回栈中最小元素

左神算法基础class3—题目2返回栈中最小元素1.题目2.分析3.核心代码4.完整代码5.结果 1.题目 实现一个特殊的栈,在实现栈的基本功能的基础上,再实现返回栈中最小元素的操作。 【要求】 1.pop、push、getMin操作的时间复杂度都是O(1)。 2.设计的栈类型可以使用现成的栈结构。 2.分析 1.可以直接使用STL中stack#include<stack>: (1)e...

shi_xiao_xuan的博客 465

【LeetCode】(简单)155. 最小栈(空间解决时间,2种方法)

思路: 要求O(1)复杂度找到,不遍历整个集合是不可能的。 但如果牺牲空间复杂度来满足这个要求 也是可以的。 有两种思路: 用两个栈。一个存储元素本身,一个存储当前最小的元素。那么入栈就得两个都入,出栈也是。 用一个栈,但是存两倍个数的元素。第一层存元素本身,第二层存当前最小值,入栈入两次,第二次判断最小元素并存入。出栈也是。 接下来就只看第二种方法的代码: class MinStack {...

致宁的大博客! 564

【Leetcode】---155.最小栈

【Leetcode】—155.最小栈 题目描述: 解题思路: 首先我们建立两个栈st1,st2,

L19002S的博客 2831
上一篇: 栈----1.有效的括号
下一篇: 栈----3.字符串解码
码破苍穹ovo
博客等级 码龄2年 377粉丝 114原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值