算法题(38):最小栈

审题:

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

思路:

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

思路一:维护min变量

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

思路二:辅助栈(minsta)

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

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

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

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

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

解题:

155. 最小栈 - 力扣(LeetCode)

相关推荐
gumichef12 小时前
算法的时间复杂度和空间复杂度
数据结构
cpp_250112 小时前
P1832 A+B Problem(再升级)
数据结构·c++·算法·动态规划·题解·洛谷·背包dp
꧁细听勿语情꧂13 小时前
合并两个有序表、判断链表的回文结构、相交链表、环的链表一和二
c语言·开发语言·数据结构·算法
大肥羊学校懒羊羊13 小时前
完数与盈数的计算题解
数据结构·c++·算法
无限进步_15 小时前
C++ 继承机制完全解析:从基础原理到菱形继承问题
java·开发语言·数据结构·c++·vscode·后端·算法
不知名的忻15 小时前
并查集(QuickUnion)
java·数据结构·算法·并查集
数智化精益手记局16 小时前
仓库安灯管理系统的异常响应机制:破解仓库安灯管理系统的跨部门协同难题
大数据·数据结构·人工智能·制造·精益工程
小张成长计划..16 小时前
【C++】25:哈希表的实现
数据结构·哈希算法·散列表
米啦啦.16 小时前
B-树,,
数据结构·b树·b-树
shy^-^cky17 小时前
文件的逻辑结构+ 物理结构
数据结构·操作系统·文件·数据·逻辑结构·物理结构·文件结构