leetCode155:最小栈
题目:
设计一个支持 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],[],[],[],[]]
思路:
- 定义一个辅助栈,其栈顶为当前的最小值,以支持获取最小值的getMin操作。
- 栈的初始化,可以用 Deque。别拼错了。
代码:
class MinStack {
/**
栈的初始化,可以用 Deque。别拼错了。
*/
Deque<Integer> dataStack;
Deque<Integer> minStack;
/**
方法:使用辅助栈
-定义一个「数据栈』来支持push、pop、top操作。
-定义一个「辅助栈』,其栈顶为当前的最小值,以支持获取最小值的getMin操作。
*/
public MinStack() {
//初始化
dataStack = new LinkedList<>();
minStack = new LinkedList<>();
//这里需要放一个初始值,不然 peek的时候会报空指针
minStack.push(Integer.MAX_VALUE);
}
public void push(int val) {
//两个栈都要存入数据
dataStack.push(val);
//存放最小数据的栈,要将最小的放在最上面
minStack.push( Math.min( minStack.peek(), val));
}
public void pop() {
dataStack.pop();
minStack.pop();
}
public int top() {
return dataStack.peek();
}
public int getMin() {
return minStack.peek();
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
2022-01-04 ElastaticSearch -- es深度分页 searchAfter
2018-01-04 SpringBoot简单理解