算法题(38):最小栈

审题:

这题需要我们实现一个可以在常数时间内检索到最小元素的栈

思路:

如果不限制时间复杂度,我们可以使用for循环遍历查找,但是这里限制了时间复杂度。

思路一:维护min变量

可以创建一个min变量,然后每次插入对象进去就和min进行比较,将较小的留给min。但是这存在一个大问题,一旦我们执行了pop函数,把min的数据删掉了,我们就无法获取当前最小的数了

思路二:辅助栈(minsta)

我们额外创建一个栈(minsta),它的目的是让栈顶保持为最小数据。

插入逻辑:一旦sta中插入了比minsta栈顶数据更小的数据,就往minsta中插入该数据。

删除逻辑:若sta删除的元素和minsta的栈顶元素值一样,那么minsta也需要删除栈顶元素

疑问:如果该数据和minsta栈顶数据一致还需要插入吗?

需要,因为如果最小数据存在两个以上,其中一个删除掉了,sta中仍然剩下该最小数据,若我们在minsta中只保存了一个该数据,那么删除之后minsta栈顶就不是最小数据了

解题:

155. 最小栈 - 力扣(LeetCode)

相关推荐
不会就选b15 小时前
数据结构之顺序表和链表的OJ题(上)
数据结构·链表
啦啦啦啦啦zzzz18 小时前
数据结构:二叉树的线索化
数据结构·算法
如竟没有火炬19 小时前
寻找峰值——二分
java·开发语言·数据结构·python·算法·散列表
he___H21 小时前
B、B+树和vue部分知识
数据结构·vue.js·b树
hai3152475431 天前
结构化编程:AI工业化编程的探索
数据结构·自然语言处理·硬件工程·动态规划·集成学习
2401_868534781 天前
2026年5月系统分析
数据结构·python·tornado
袋鼠云数栈1 天前
数栈 V7.0 多模态数据智能平台:打造 AI-Ready 的企业数据底座
大数据·数据结构·数据库·人工智能·数据治理·多模态
迈巴赫车主1 天前
优先队列(PriorityQueue)
数据结构·算法
Boom_Shu1 天前
构造函数程序
数据结构·算法
Lucky_ldy1 天前
数据结构从入门到精通:链表
数据结构·链表