算法题(38):最小栈

审题:

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

思路:

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

思路一:维护min变量

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

思路二:辅助栈(minsta)

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

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

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

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

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

解题:

155. 最小栈 - 力扣(LeetCode)

相关推荐
垆边人似月.19 小时前
华为机考题:明明的随机数
数据结构·算法·华为
lusklusklusk20 小时前
Python 四大数据结构详解:元组、列表、集合、字典的特点与增删改查
数据结构·windows·python
keyipatience20 小时前
B树详解:从零构建平衡多路搜索树
数据结构·b树·算法·图搜索
FluxArt20 小时前
GPT Image 2.5 多图参考怎么用:Flux Art 生成与编辑教程
数据结构·gpt·算法
All for pursuit.21 小时前
【分治-2】215.数组中的第K个最大元素
数据结构·c++·算法·leetcode
w_zero_one21 小时前
链表(3)
java·数据结构·算法
Bruce_Liuxiaowei1 天前
元组与具名元组:把「第 3 个字段」变成「price」
数据结构·python·语法·元组
今晚打老虎1 天前
c++之提高A(前缀和)(第三课)
数据结构·c++·算法
不会就选b1 天前
算法日常・每日刷题--<贪心>26
数据结构·算法
Logic1012 天前
C语言/数据结构位运算题解:异或XOR找出书柜中编号只出现一次的那一层——只出现一次的数字
c语言·数据结构·数组·位运算·时间复杂度·算法题·异或性质