leetcode 155. 最小栈
难度:简单
频次:59
题目:
设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。
实现 MinStack 类:
MinStack() 初始化堆栈对象。
void push(int val) 将元素val推入堆栈。
void pop() 删除堆栈顶部的元素。
int top() 获取堆栈顶部的元素。
int getMin() 获取堆栈中的最小元素。
解题思路: 用辅助栈||只用一个栈
用辅助栈注意:
- 因为提示里的pop等操作都是在非空栈上调用,所以不用考虑太多
- 初始化辅助栈后添加一个最大的整数
- 然后只要原来的栈进一个,就判断值跟辅助栈顶的数哪个小,取小的直接再放辅助栈即可(这里不用把原来的腾出来)
- 然后出去 就两个栈一起出去就行了,右边的栈就记录了最小值的取值历史
代码
class MinStack {public Stack<Integer> stack;public Stack<Integer> minstack;public MinStack() {stack=new Stack<Integer>();minstack=new Stack<Integer>();//最小栈先放入一个最大值,可以一开始不用判断minstack.push(Integer.MAX_VALUE);}public void push(int val) {stack.push(val);minstack.push(Math.min(minstack.peek(),val));}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();*/
用一个栈思路还是还差不多,只不过存进去的是一个数组
代码
class MinStack {public Stack<int []> stack;public MinStack() {stack=new Stack<int []>();}public void push(int val) {if(!stack.isEmpty()){stack.push(new int[] {val,Math.min(val,stack.peek()[1])});}else{stack.push(new int[] {val,val});}}public void pop() {stack.pop();}public int top() {return stack.peek()[0];}public int getMin() {return stack.peek()[1];}
}/*** 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. 最小栈相关推荐
- LeetCode:155. 最小栈
题目链接 155.最小栈 题目描述 设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈. push(x) -- 将元素 x 推入栈中. pop() -- 删除栈顶的元素. ...
- leetcode 155. 最小栈(常数时间获取最小值,需要维护两个栈)
题目 思路 左神讲过的经典算法,维护两个栈: stack,用来存储数据 minStack,用来存储每个位置情况下的最小值,类似于动态规划. 每次入栈2个元素,一个是入栈的元素本身,一个是当前栈元素的最 ...
- LeetCode 155.最小栈
设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈. 实现 MinStack 类: MinStack() 初始化堆栈对象. void push(int val) 将元 ...
- leetcode - 155. 最小栈
设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈. push(x) – 将元素 x 推入栈中. pop() – 删除栈顶的元素. top() – 获取栈顶元素. get ...
- Leetcode 155. 最小栈 (每日一题 20210923)
设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈.push(x) -- 将元素 x 推入栈中. pop() -- 删除栈顶的元素. top() -- 获取栈顶元素. ...
- 【LeetCode】【HOT】155. 最小栈(辅助栈)
[LeetCode][HOT]155. 最小栈 文章目录 [LeetCode][HOT]155. 最小栈 package hot;import java.util.ArrayDeque; import ...
- leetcode系列-155.最小栈
leetcode系列–第155题.最小栈 题目描述: 设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈. 实现 MinStack 类: MinStack() 初始化 ...
- 【LeetCode笔记】155. 最小栈(Java、栈)
文章目录 题目描述 思路 & 代码 更新版 题目描述 用空间换时间的经典例子,唯一要解决的地方就是 getMin() 如何实现常数检索 (貌似也是面试常考题) 思路 & 代码 既然想快 ...
- leetcode题目-最小栈和用两个栈实现队列
1.用两个栈实现队列 a栈用来存放加入的数 b栈用来存放要删除的数 当b栈存在数据时,就把top的元素pop掉 直到b栈中没有数据存放,再重新遍历a栈,把a的数据倒着遍历进b栈.也就是b栈存放着倒着的 ...
最新文章
- 远场语音识别错误率降低30%,百度提基于复数CNN网络的新技术
- js调用天地图api
- ETSI GS MEC 014,UE 标识 API
- jenkins 自动化部署常用插件
- 查看oracle的service name
- 利用Multisim快速分析一个RC电路
- MySQL增强版命令行客户端连接工具(mycli)
- 简单搞一下 Oracle 存储过程测试!
- Exchange Server 2013 RTM发布
- 51单片机c语言编写计算器仿真,51单片机实现计算器 proteus仿真及其程序源码 带教程...
- 2010.11.18 关于向窗口发送消息
- 勤哲excel服务器2017试用
- .net反编译工具Reflector下载
- bp神经网络算法原理公式,bp神经网络算法推导
- 原来系统还能这么装!教你虚拟光驱Daemon重装win10
- 光纤交换机分为哪几种 光纤交换机连接图
- 学习了pr后的收获_pr学习心得(入门篇)
- 万能设配器代码 带加载更多
- 计算机公式加法A C,概率公式c怎么计算
- PHP+Mysql制作一个学生成绩查询模块
热门文章
- VMWare: eth0: error fetching interface information : device not found
- Python开发Day03
- Axis 实现的SOAP附件的传输
- Cs Tip13: 删除安装文件
- While executing gem ... (Errno::EACCES)
- Guava中针对集合的 filter和过滤功能
- Report_报表中Ref Cursor数据源的概念和用法(案例)
- OpenStack看到中国“钱”景
- .net安装部署中添加卸载程序简单方法
- 14个数据库的设计技巧 (来自Blogcn中我的窝)