leetcode刷题155 最小栈 Min Stack(简单) Python Java

【信息科学与工程学】【数据科学】数据科学领域 第六篇 算法设计 07 堆、栈、表、矩阵、集合、队列、数组、字符串、树、图、动态规划、结构体、元组的算法01 当前段必须包含所有字符的最后出现位置。1. 字符串分割成最多片段2. 基因序列功能域划分3. 文本段落划分4. 音频声道分离5. 图像色彩分区6. 社交网络社群划分7. 蛋白质结构域8. 音乐乐章分段9. 代码模块划分10. 章节划分特征:一次扫描,贪心确定边界。 阅读详情

题目概述:

设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈。
push(x) – 将元素 x 推入栈中。
pop() – 删除栈顶的元素。
top() – 获取栈顶元素。
getMin() – 检索栈中的最小元素。

示例

MinStack minStack = new MinStack();
minStack.push(-2);
minStack.push(0);
minStack.push(-3);
minStack.getMin(); --> 返回 -3.
minStack.pop();
minStack.top(); --> 返回 0.
minStack.getMin(); --> 返回 -2.

class MinStack(object):
 
    def __init__(self):
        """
        initialize your data structure here.
        """
        self.stack = []   # 存放所有元素
        self.minStack = []  # 存放每一次压入数据时,栈中的最小值(如果压入数据的值大于栈中的最小值就不需要重复压入最小值,小于或者等于栈中最小值则需要压入)
 
    def push(self, x):
        """
        :type x: int
        :rtype: void
        """
        self.stack.append(x)
        if not self.minStack or self.minStack[-1]>=x:
            self.minStack.append(x)
 
    def pop(self):   # 移除栈顶元素时,判断是否移除栈中最小值
        """
        :rtype: void
        """
        if self.minStack[-1]==self.stack[-1]:
            del self.minStack[-1]
        self.stack.pop()
 
    def top(self):
        """
        :rtype: int
        """
        return self.stack[-1]
        
    def getMin(self):
        """
        :rtype: int
        """
        return self.minStack[-1]

 

以下是Java版本:

1.class MinStack {  
2.    // stack: store the stack numbers  
3.    private Stack<Integer> stack = new Stack<Integer>();  
4.    // minStack: store the current min values  
5.    private Stack<Integer> minStack = new Stack<Integer>();  
6.  
7.    public void push(int x) {  
8.        // store current min value into minStack  
9.        if (minStack.isEmpty() || x <= minStack.peek())  
10.            minStack.push(x);  
11.        stack.push(x);  
12.    }  
13.  
14.    public void pop() {  
15.        // use equals to compare the value of two object, if equal, pop both of them  
16.        if (stack.peek().equals(minStack.peek()))  
17.            minStack.pop();  
18.        stack.pop();  
19.    }  
20.  
21.    public int top() {  
22.        return stack.peek();  
23.    }  
24.  
25.    public int getMin() {  
26.        return minStack.peek();  
27.    }  
28.}  

【分析】

这道题的关键之处就在于 minStack 的设计,push() pop() top() 这些操作Java内置的Stack都有,不必多说。

我最初想着再弄两个数组,分别记录每个元素的前一个比它大的和后一个比它小的,想复杂了。

第一次看上面的代码,还觉得它有问题,为啥只在 x<minStack.peek() 时压栈?如果,push(5), push(1), push(3) 这样minStack里不就只有5和1,这样pop()出1后, getMin() 不就得到5而不是3吗?其实这样想是错的,因为要想pop()出1之前,3就已经被pop()出了。. 

minStack 记录的永远是当前所有元素中最小的,无论 minStack.peek() 在stack 中所处的位置。

发那科机器人弧焊指令实战:从Search指令到组掩码设置的完整避坑指南 本文详细解析了发那科机器人弧焊指令系统的实战应用,从Search指令的正确使用到组掩码设置的避坑技巧。通过实际案例和参数优化建议,帮助工程师提升焊接质量和生产效率,避免常见错误操作。特别针对T2模式示教难题和外部轴协调运动提供了专业解决方案。 阅读详情

相关推荐

逆向解析手淘x-sign签名算法:从抓包到API调用的完整实践

本文详细解析了手淘x-sign签名算法的逆向过程,从抓包工具选择到API调用实践,提供了完整的解决方案。通过分析签名参数组成和生成机制,帮助开发者理解并实现淘宝接口的合法调用,同时强调了安全与合规的重要性。

weixin_29323273的博客 600

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

ass673556617的专栏 316

Computers & Security 投稿实战:从零到一详解避坑指南

本文详细解析了向《Computers & Security》投稿的全流程避坑指南,包括ORCID账号注册、文件格式统一、Editorial Manager®系统操作技巧等关键步骤。特别强调了cover letter撰写、Declaration of Interest Statement准备以及PDF生成后的检查要点,帮助研究者高效完成投稿流程。

weixin_29228203的博客 674

leetcode Min Stack

Min Stack 题目:https://leetcode.com/problems/min-stack/ 解题思路:创建两个栈,一个作为普通的栈,另外一个栈每次栈顶存放最小的元素。 push: 首先比较要加入的元素与minStack 栈顶的元素的大小 x<minStack.peek() minStack.push(x) 普通栈在任何时候都要加入元素。 pop:首先比较普通栈的...

厚积薄发的博客 403

如何使用ArcGIS Pro制作带基底三维地图

点击运行生成范围线,因为之前对高程进行了夸大,导致生成的范围线和地形边缘不重合,我们打开范围线的图层属性,选择高程选项卡,要素位于选择地面上,如下图所示。目前制作的三维地图下面是空的一片,现在添加一个基底,在工具箱内点击“3D Analyst工具\栅格\转换\栅格范围”,调用栅格范围工具,如下图所示。打开ArcGIS Pro,新建一个局部场景,在高程表面下,地面上点击右键,选择添加高程源图层,将需要制作三维地图的DEM数据加载进来,如下图所示。在要素图层菜单内,类型选择绝对高度,如下图所示。

3978

FFmpeg硬件加速实战:VAAPI驱动配置全攻略(含NVIDIA/Intel避坑指南)

本文详细解析了在Linux环境下配置FFmpeg使用VAAPI接口实现硬件加速的完整流程。针对NVIDIA、Intel等主流显卡,提供了从驱动安装、环境变量设置到多显卡切换的实战指南,并重点解决了闭源驱动冲突、国产系统适配等常见问题,帮助用户有效提升视频处理性能。

weixin_29306011的博客 454

Stack的peek()及小小应用

top()函数:直接返回栈A的栈顶元素即可,即返回A.peek()min()函数:直接返回栈B的栈顶元素即可,即返回B.peek()。辅助栈B︰栈B中存储栈A中所有非严格降序的元素,则栈A中的最小元素始终对应栈B的栈顶元素,即min()函数只需返回栈B的栈顶元素即可。数据栈A:栈A用于存储所有元素,保证入栈push() 函数、出栈pop()函数、获取栈顶top()函数的正常逻辑。2.若①栈B为空或②a小于等于栈B的栈顶元素,则将α压入栈B(即B.add (x) )。参数:它不接受任何参数。

qq_44075208的博客 2216

用Python+Charles搞定小程序付费短剧下载(附完整代码与避坑点)

本文详细介绍了如何利用Python和Charles抓包工具实现小程序付费短剧的自动化下载。通过分析小程序视频接口、破解请求参数,并编写Python脚本,读者可以轻松获取并保存短剧内容。文章还提供了完整的代码示例和常见问题的解决方案,特别适合对视频采集和抓包技术感兴趣的开发者。

weixin_28731231的博客 1187

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

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

weixin_52291111的博客 2278

黑群晖DSM7.0.1物理机安装教程

使用芯片无忧工具,查看U盘的和。使用,格式化U盘。使用镜像写入工具,把引导写入U盘。修改文件,可以使用工具把文件复制到桌面,通过修改好之后,拖进这个界面中。或者在电脑中,查看U盘,打开U盘中的文件直接修改。具体修改内容如下:PID修改为U盘的PIDVID修改为U盘的VID默认只有mac1=a8412083CB52 mac2=0a11323D47F7 ,增加:mac3=a15823C08000 mac4=a23C04158B52 mac5=82a002524158 mac6=38233052415aS

JingLisen的博客 2万+

# 【WorkBuddy专栏33】工作空间,最大的WorkBuddy技巧——任务隔离、记忆分区与多项目管理实战

工作空间,最大的WorkBuddy技巧——任务隔离、记忆分区与多项目管理实战

AI人人懂 2114

设计能在常数时间内检索到最小元素的栈(最小栈问题)

题目: 155.最小栈设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。实现 MinStack 类:MinStack() 初始化堆栈对象。 void push(int val) 将元素val推入堆栈。 void pop() 删除堆栈顶部的元素。 int top() 获取堆栈顶部的元素。 int getMin() 获取堆栈中的最小元素。示例:思路: 要能在常数时间内就能取到最小元素,考虑用一个额外的栈来存放最小值。主要考虑 push 操作和 pop 操作。思路一: 每压

AwwzJ_0821的博客 494

03 Token、Embedding、上下文窗口:开发者必须懂的三个基本概念

Token、Embedding 和上下文窗口是大模型应用开发的三个基础概念。本文从成本、速度、检索和上下文设计四个角度讲清它们的工程意义,帮助开发者理解为什么同一段内容会超限、变贵,为什么 RAG 能做语义检索。

老于的笔记的专栏 407

LeetCode 155:最小栈 Min Stack

LeetCode 155:最小栈 Min Stack 设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈。 push(x) – 将元素 x 推入栈中。 pop() – 删除栈顶的元素。 top() – 获取栈顶元素。 getMin() – 检索栈中的最小元素。 Design a stack that supports push, pop, top, and ret...

爱写Bug 268

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

LeetCode 刷题笔记 155. 最小栈(Min Stack)

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

weixin_30877181的博客 229

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

leetcode 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 t...

JackZhangNJU的专栏 1250

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

【leetcode】【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.t

斗code、年华 475

155.最小栈(Min Stack)

题目描述解题思路

写后端的小学生 1326

Leetcode - 155 - Min Stack (easy)

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 the top element. getMin() -- Retrieve the minimum ele

xin_rong的博客 240

[LeetCode] 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() -- ...

weixin_30764771的博客 102

leetcode155. 最小栈(Java& python3)

java: class MinStack { Deque<Integer> stack1; Deque<Integer> stack2; public MinStack() { stack1=new LinkedList<>(); stack2=new LinkedList<>(); } public void push(int val) { stack1.

qq_45908682的博客 266

LeetCode——Min Stack

LeetCode——Min Stack # 155 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

BigSea 355

数据结构实战指南:gh_mirrors/leetcode21/leetcode中的Trie、单调队列与堆应用

在算法与数据结构的学习中,Trie、单调队列和堆是解决特定问题的高效工具。本文将通过gh_mirrors/leetcode21/leetcode项目中的实战案例,带你掌握这三种数据结构的核心应用场景与实现思路,帮助你在刷题和实际开发中快速解决复杂问题。 ## 一、Trie树:高效前缀匹配的利器 Trie树(前缀树)是一种特殊的树形数据结构,专门用于处理字符串的前缀匹配问题。在gh_mirror

gitblog_00605的博客 953

最小栈-LeetCode(简单)

一、题目描述 设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。 实现 MinStack 类: MinStack() 初始化堆栈对象。 void push(int val) 将元素val推入堆栈。 void pop() 删除堆栈顶部的元素。 int top() 获取堆栈顶部的元素。 int getMin() 获取堆栈中的最小元素。 二、解题思路 题目主要是让我们设计一个算法能够以O(1)(即是不用遍历所有元素)的时间复杂度取出当前栈内元素的最小值,所以利用一个辅

jaaccck的博客 761

155. Min Stack堆栈最小值Python

设计一个堆栈,以支持在恒定时间内推送,弹出,顶部和检索最小元素。 push(x)-将元素x推入堆栈 pop()-删除堆栈顶部的元素。 top()-获取顶部元素。 getMin()-检索堆栈中的最小元素。 Input:["MinStack","push","push","push","getMin","pop","top","getMin"] [[],[-2],[0],[-3],[],[],[],[]] Output:[null,null,null,null,-3,nul...

weixin_44516745的博客 298
上一篇: leetcode刷题141 环形链表 Linked List Cycle(简单) Python Java
下一篇: leetcode刷题160 相交链表 Intersection of Two Linked Lists(简单) Python Java
SpringRolls
博客等级 码龄9年 73粉丝 129原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值