
文章图片

定义栈的数据结构 , 请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中 , 调用 min、push 及 pop 的时间复杂度都是 O(1) 。
示例MinStack minStack = new MinStack();
minStack.push(-2);
minStack.push(0);
minStack.push(-3);
minStack.min(); --> 返回 -3.
minStack.pop();
minStack.top(); --> 返回 0.
minStack.min(); --> 返回 -2.
提示各函数的调用总次数不超过 20000 次
方法:辅助栈栈是一种后进先出(LIFO)的数据结构 , 为了满足题目的要求 , 我们建立了一个辅助栈用于存放最小值 , 核心思想就是:当每入栈一个值的时候 , 同时辅助栈存入最小值即可 。
算法如下:
- MinStack:分别初始化栈、辅助栈、以及存放到辅助栈最大值(用最大值占位 , 入栈的时候不需要判空处理);
- push:两个栈存值 , 注意辅助栈存值需要进行比对最小值;
- pop:两个栈出栈
- top:返回栈的头(新)元素
- min:返回最小值 , 直接返回辅助栈的头元素即可
代码如下:
复杂度分析
- 时间复杂度:对于题目中的所有操作 , 时间复杂度均为 O(1) 。 因为栈的插入、删除与读取操作都是 O(1) , 我们定义的每个操作最多调用栈操作两次 。
- 空间复杂度:O(n) , 其中 n 为总操作数 。 最坏情况下 , 我们会连续插入 n 个元素 , 此时两个栈占用的空间为 O(n) 。
- PHP|配备RGB炫彩呼吸灯的迷你电脑!神舟战神Mini R5是否值得选?
- 算法|外卖行业的下滑,或许是平台从放弃“算法”的那一刻起!
- 入门级无人机新方向,大疆DJI Mini 3发布,单机身仅2689元
- Mini-circuits射频微波元器件,可提供选型/技术支持 超10000 多款型号产品!
- 算法|快手亏损780亿,滴滴493亿,美团235亿,怎么回事?
- 算法|视频蹿红的秘密,流量密码到底是什么?
- 大疆|入门级无人机新方向,大疆DJI Mini 3发布,单机身仅2689元
- deepmind|马斯克点赞!DeepMind神AI编剧,一句话生成几万字剧本
- 小米科技|小米发布会大概是七款新品,手机两个系列,还有mini电脑主机
- 运营商|大疆Mini 3无人机发布:支持4K HDR视频拍摄 售价公布
