最小栈的实现与优化
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,最小栈实现一个最小栈,一步一步优化,从额外空间O(N) 到O(1) 。面试官看重代码逻辑。push,pop,top,getMin都是O(1)时间。1 用一个最小栈来存储最小值1.1要点:2个栈,dat
千家信息网最后更新 2026年11月01日最小栈的实现与优化
最小栈
实现一个最小栈,一步一步优化,从额外空间O(N) 到O(1) 。面试官看重代码逻辑。push,pop,top,getMin都是O(1)时间。
1 用一个最小栈来存储最小值
1.1要点:
2个栈,data用来存储数据,minValue用来存储最小值。
push时,data直接push数据;minValue直接放入当前最小的值。(对于minValue有一个优化,当push的数据比当前最小值大的时候,我们可以不对minValue进行最小值的插入;如果小于或者等于最小值,就需要把最新的最小值push入栈minValue。pop时,data直接pop出数据;同时,更新minValue,更新的策略是与push中的优化对应的策略--pop出的数,如果==当前的最小值,就需要把minValue进行pop一次。getMin:直接返回栈minValue 的 top元素即可。top: 直接返回栈data的top元素即可。
1.2 复杂度和代码
额外空间消耗O(N),如何优化到O(1).
public class MinStack1 { private Stack data = new Stack(); private Stack minValue = new Stack(); public void push(int x) { data.push(x); if (minValue.isEmpty() || x <= minValue.peek()) minValue.push(x); } public void pop() { int value = data.pop(); if (value == minValue.peek()) minValue.pop(); } public int top() { return data.peek(); } public int getMin() { return minValue.peek(); }} 2 优化空间复杂度到O(1)
如何只用一个栈实现最小栈的实现?
栈不能够只存储原始数据,应该存储差值。
用一个变量来计算栈的最小值
用简单的示例来探索思路。
2.1 图
入栈顺序:2,1,3,4,-2,0,-2
diff栈的计算 = data - min
| 出栈的data | 最小值 | diff栈 | 最小值min | |
|---|---|---|---|---|
| 2 | 2 | 0 | 2 | |
| 1 | 1 | -1 | 1 | |
| 3 | 1 | 2 | 1 | |
| 4 | 1 | 3 | 1 | |
| -2 | -2 | -3 | -2 | |
| 0 | -2 | 2 | -2 | |
| -2 | -2 | 0 | -2 |
top : 如何根据diff栈来恢复栈顶top的元素?push : 如何更新min最小值?pop : 如何维护min的最小值?
2.2 代码
注意:第一次入栈diff的特殊处理。
public class MinStack3 { private Stack diff = new Stack(); private int minValue; public void push(int x) { if (diff.isEmpty()) { minValue = x; diff.push(0); } else { int compare = x - minValue; diff.push(compare); minValue = compare < 0 ? x : minValue; } } public void pop() { int top = diff.peek(); minValue = top < 0 ? (minValue - top) : minValue; diff.pop(); } public int top() { int top = diff.peek(); return top > 0 ? top + minValue : minValue; } public int getMin() { return minValue; }} 新航道雅思
最小
数据
存储
代码
元素
空间
更新
复杂
复杂度
策略
不对
原始
特殊
变量
同时
差值
思路
时候
时间
示例
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
广东猪兼强互联网科技有限公司
互联网科技官网
科技与互联网
美国互联网科技巨头监管
深圳互联网科技公司
礼当家互联网科技
互联网与新科技
九亚互联网科技
奇酷互联网络科技公司
撒么互联网科技公司
互联网科技公司做什么
卫星互联网科技股票
科技赋能互联网健康
科技与互联网的利与弊
中国互联网有什么科技含量
洛阳昕诺飞互联网科技有限公司
互联网新科技动漫ppt素材
东营紫格互联网科技
互联网科技企业商标注意事项
三亚科技创新互联网基地
科技信息互联网
艾特科技互联网
互联网金融科技委员会
互联网科技类展会
玉溪互联网科技怎么选
民营互联网公司国防科技
互联网科技股为什么大涨
工业互联网科技成果转化
数字互联网科技有限公司
第三届互联网大会安防黑科技