诈知 发表于 2025-11-29 13:45:24

剑指offer-20、包含min函数的栈

题⽬描述

定义栈的数据结构,请在该类型中实现⼀个能够得到栈中所含最⼩元素的min 函数(时间复杂度为O(1) )。
此栈包含的⽅法有:

[*]push(value) :将value 压⼊栈中
[*]pop() :弹出栈顶元素
[*]top() :获取栈顶元素
[*]min() :获取栈中最⼩元素
思路及解答

双栈法(推荐,实现简单)

使用两个栈:

[*]​主栈​:存储所有元素
[*]​辅助栈​:存储当前主栈中的最小值
push ⼀个元素的时候,都需要push 进datas stack ,但是push 进⼊mins stack 需要满⾜条件:当前的mins stack 是空的,直接放⼊。或者当前的mins stack 的栈顶元素⼤于或者等于push 进来的值。
pop ⼀个元素的时候,如果栈为空则什么都不操作,如果栈不为空,则判断datas 的第⼀个元素是否和mins 的第⼀个元素相等。如果相等的话那么就需要将mins 和datas pop 出去第⼀个元素,否则只需要将datas 的第⼀个元素 pop 出去即可。
public class Solution {        private Stack datas = new Stack();        private Stack mins = new Stack();        /​**​   * 将元素压入栈中   * @param value 要压入的值   */        public void push(int node) {                datas.push(node);                // 如果辅助栈为空,或新值

崔竹 发表于 2025-12-13 14:23:25

感谢发布原创作品,程序园因你更精彩

缀访 发表于 2025-12-14 17:19:33

很好很强大我过来先占个楼 待编辑

仁夹篇 发表于 2025-12-25 22:05:55

这个有用。

觞刈 发表于 2026-1-13 14:39:48

分享、互助 让互联网精神温暖你我

姚望舒 发表于 2026-1-14 01:11:46

东西不错很实用谢谢分享

科元料 发表于 2026-1-17 00:27:20

这个有用。

穆望 发表于 2026-1-18 19:33:04

鼓励转贴优秀软件安全工具和文档!

章娅萝 发表于 2026-1-20 16:07:07

热心回复!

筒濂 发表于 2026-1-20 20:32:53

谢谢分享,辛苦了

皮仪芳 发表于 2026-1-22 14:09:30

谢谢分享,试用一下

即息极 发表于 2026-1-24 13:16:06

谢谢分享,试用一下

句惫 发表于 2026-1-25 07:53:48

不错,里面软件多更新就更好了

缀访 发表于 2026-2-1 16:12:35

热心回复!

驶桐柢 发表于 2026-2-5 04:31:39

感谢分享,学习下。

羡渥蛛 发表于 2026-2-6 07:27:41

热心回复!

艺轫 发表于 2026-2-8 11:58:22

感谢分享,学习下。

高清宁 发表于 2026-2-8 15:10:42

感谢发布原创作品,程序园因你更精彩

滥眩 发表于 2026-2-8 15:58:37

感谢,下载保存了

汪之亦 发表于 2026-2-10 05:44:07

用心讨论,共获提升!
页: [1] 2
查看完整版本: 剑指offer-20、包含min函数的栈