leetcode 155. Min Stack最小栈(中等)
一、题目大意
标签: 栈和队列
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最小栈(中等)相关推荐
- [勇者闯LeetCode] 155. Min Stack
[勇者闯LeetCode] 155. Min Stacke Description Design a stack that supports push, pop, top, and retrievin ...
- LeetCode 155. Min Stack
题目: Design a stack that supports push, pop, top, and retrieving the minimum element in constant time ...
- Leetcode刷题 155题: 最小栈(基于python3和c++两种语言)
** Leetcode刷题 155题: 最小栈(基于python3和c++两种语言) ** ** 题目: ** 设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈. ...
- leetcode python3 简单题155. Min Stack
1.编辑器 我使用的是win10+vscode+leetcode+python3 环境配置参见我的博客: 链接 2.第一百五十五题 (1)题目 英文: Design a stack that supp ...
- LeetCode - Easy - 155. Min Stack
Topic Stack Design Description https://leetcode.com/problems/min-stack/ Design a stack that supports ...
- LeetCode Min Stack 最小值栈
题意:实现栈的四个基本功能.要求:在get最小元素值时,复杂度O(1). 思路:链表直接实现.最快竟然还要61ms,醉了. 1 class MinStack { 2 public: 3 MinStac ...
- 【leetcode】Min Stack -- python版
题目描述: Design a stack that supports push, pop, top, and retrieving the minimum element in constant ti ...
- LeetCode题解——T155(最小栈)
题目描述 设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈. push(x) -- 将元素 x 推入栈中. pop() -- 删除栈顶的元素. top() -- 获 ...
- 《LeetCode力扣练习》第155题 最小栈 Java
<LeetCode力扣练习>第155题 最小栈 Java 一.资源 题目: 设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈. 实现 MinStack ...
- LeetCode:155. 最小栈
题目链接 155.最小栈 题目描述 设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈. push(x) -- 将元素 x 推入栈中. pop() -- 删除栈顶的元素. ...
最新文章
- VMware Tools手动下载
- 耳机不分主从是什么意思_强悍的配置,百元级的价格,Xisem西圣 Ares战神蓝牙耳机体验...
- python变量存储 堆与栈内存内存_浅析JS中的堆内存与栈内存
- 用21张图,把Git 工作原理彻底说清楚
- 【Java Calendar日历类】可视化日历程序(控制台输出)
- 服务器和交换机之间网络协议,网络协议是计算机网络中服务器,计算机,交换机.doc...
- 英特尔处理器曝出重大安全漏洞,迫使 Linux 和 Windows 更新设计
- 计算机应用基础教程上机指导及题库,计算机应用基础习题及上机指导
- java俄罗斯方块代码_[转载]java编写的一个俄罗斯方块(源代码)
- 5.3LNA的拓扑结构
- 【JAVA】IOStream
- 卷积总结篇(普通卷积、转置卷积、膨胀卷积、分组卷积和深度可分离卷积)
- 简体中文旗舰版Windows7SP1
- 虚拟机Ubuntu不能识别外接U盘
- jQuery的绑定与解绑方法
- 跟Android自带模拟器说拜拜,Mac Genymotion 使用心得
- (精)广东工业大学 2018实时大数据分析——ShinglingMinhash实验报告
- 计算机工程与网络学术会议怎么样,我校成功举办第九届计算机工程与网络(CENet2019)国际学术会议...
- 计算机网考里操作题发邮件,计算机网考操作题题型.doc
- Easy Excel