一、题目大意

标签: 栈和队列

https://leetcode.cn/problems/min-stack

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

实现 MinStack 类:

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

示例 1:

输入:
[“MinStack”,“push”,“push”,“push”,“getMin”,“pop”,“top”,“getMin”]
[[],[-2],[0],[-3],[],[],[],[]]

输出:
[null,null,null,null,-3,null,0,-2]

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

提示:

  • -231 <= val <= 231 - 1
  • pop、top 和 getMin 操作总是在 非空栈 上调用
  • push, pop, top, and getMin最多被调用 3 * 104 次

二、解题思路

可以额外建立一个栈(最小值栈),栈顶表示原栈中最小值。插入一个数字时,如果该值小于新栈的栈顶值说明该数是最小值,将其同时插入原栈和最小值栈。取数时,如果原栈的值等于最小值栈的值,说明这个数是原栈中的最小值,原栈和最小值栈需要同时移除该元素。

实现:每次插入栈时,都向最小值栈插入一个原栈里所有值的最小值。

三、解题方法

3.1 Java实现

class MinStack {Stack<Integer> s;/*** 辅助栈*/Stack<Integer> minS;public MinStack() {s = new Stack<>();minS = new Stack<>();}public void push(int val) {s.push(val);// 注意这里是>=if (minS.isEmpty() || minS.peek() >= val) {minS.push(val);}}public void pop() {int val = s.pop();if (!minS.isEmpty() && minS.peek() == val) {minS.pop();}}public int top() {return s.peek();}public int getMin() {return minS.isEmpty() ? 0 : minS.peek();}
}// Integer 与 int 比较/*** 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();*/

四、总结小记

  • 2022/8/8 这两天有大到暴雨,能凉快一些吧

leetcode 155. Min Stack最小栈(中等)相关推荐

  1. [勇者闯LeetCode] 155. Min Stack

    [勇者闯LeetCode] 155. Min Stacke Description Design a stack that supports push, pop, top, and retrievin ...

  2. LeetCode 155. Min Stack

    题目: Design a stack that supports push, pop, top, and retrieving the minimum element in constant time ...

  3. Leetcode刷题 155题: 最小栈(基于python3和c++两种语言)

    ** Leetcode刷题 155题: 最小栈(基于python3和c++两种语言) ** ** 题目: ** 设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈. ...

  4. leetcode python3 简单题155. Min Stack

    1.编辑器 我使用的是win10+vscode+leetcode+python3 环境配置参见我的博客: 链接 2.第一百五十五题 (1)题目 英文: Design a stack that supp ...

  5. LeetCode - Easy - 155. Min Stack

    Topic Stack Design Description https://leetcode.com/problems/min-stack/ Design a stack that supports ...

  6. LeetCode Min Stack 最小值栈

    题意:实现栈的四个基本功能.要求:在get最小元素值时,复杂度O(1). 思路:链表直接实现.最快竟然还要61ms,醉了. 1 class MinStack { 2 public: 3 MinStac ...

  7. 【leetcode】Min Stack -- python版

    题目描述: Design a stack that supports push, pop, top, and retrieving the minimum element in constant ti ...

  8. LeetCode题解——T155(最小栈)

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

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

    <LeetCode力扣练习>第155题 最小栈 Java 一.资源 题目: 设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈. 实现 MinStack ...

  10. LeetCode:155. 最小栈

    题目链接 155.最小栈 题目描述 设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈. push(x) -- 将元素 x 推入栈中. pop() -- 删除栈顶的元素. ...

最新文章

  1. VMware Tools手动下载
  2. 耳机不分主从是什么意思_强悍的配置,百元级的价格,Xisem西圣 Ares战神蓝牙耳机体验...
  3. python变量存储 堆与栈内存内存_浅析JS中的堆内存与栈内存
  4. 用21张图,把Git 工作原理彻底说清楚
  5. 【Java Calendar日历类】可视化日历程序(控制台输出)
  6. 服务器和交换机之间网络协议,网络协议是计算机网络中服务器,计算机,交换机.doc...
  7. 英特尔处理器曝出重大安全漏洞,迫使 Linux 和 Windows 更新设计
  8. 计算机应用基础教程上机指导及题库,计算机应用基础习题及上机指导
  9. java俄罗斯方块代码_[转载]java编写的一个俄罗斯方块(源代码)
  10. 5.3LNA的拓扑结构
  11. 【JAVA】IOStream
  12. 卷积总结篇(普通卷积、转置卷积、膨胀卷积、分组卷积和深度可分离卷积)
  13. 简体中文旗舰版Windows7SP1
  14. 虚拟机Ubuntu不能识别外接U盘
  15. jQuery的绑定与解绑方法
  16. 跟Android自带模拟器说拜拜,Mac Genymotion 使用心得
  17. (精)广东工业大学 2018实时大数据分析——ShinglingMinhash实验报告
  18. 计算机工程与网络学术会议怎么样,我校成功举办第九届计算机工程与网络(CENet2019)国际学术会议...
  19. 计算机网考里操作题发邮件,计算机网考操作题题型.doc
  20. Easy Excel

热门文章

  1. mysql 时间毫秒值_MySQL存储毫秒数据的方法
  2. WORD2010文档里面突然不能输入汉字的解决办法
  3. 史上最详细mac安装Qt教程
  4. COSTDOWN版本的NRF51802和NRF51822的复位问题
  5. ubuntu mysql无法启动服务器_ubuntu – Mysql无法启动mysqld.sock缺失
  6. JavaWeb学习笔记之——Servlet HTTP Request
  7. PDF打印内容缺失问题解决办法
  8. [授权发表]程序执行的那一刹那
  9. 一刹那,是幡然悔悟的一刹那
  10. Python爬虫 | 爬虫基础入门看这一篇就够了