如何在O(1)内找到实时序列的最小值
发表于:2025-01-18 作者:千家信息网编辑
千家信息网最后更新 2025年01月18日,如何在O(1)内找到实时序列的最小值,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。最小栈最小栈,能在O(1)内找到栈内序列的最小值,
千家信息网最后更新 2025年01月18日如何在O(1)内找到实时序列的最小值
如何在O(1)内找到实时序列的最小值,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
最小栈
最小栈,能在O(1)内找到栈内序列的最小值,因此此特性经常用于提升算法性能。下面看看它的一种实现。
分析过程
入栈分析:
推入元素到 mainstack,只有当当前元素小于tmpstack栈顶(实际存储为mainstack中元素索引)元素时,才入栈到tmpstack,入栈的是索引。
假设mainstack当前有n个元素,则tmpstack内元素至多有n个。等于n时,表明原入栈序列为单调递减序列。
出栈分析:
元素从mainstack出栈,但要注意出栈元素索引是否等于tmpstack栈顶,若是需要将tmpstack栈顶元素出栈。可以预知,栈顶索引一定小于等于出栈元素(在mainstack栈内)的索引。
这道题需要注意两点:
临时栈里推送的是主栈的元素索引
push时若临时栈为空,需要先推入此元素在主栈索引
代码
class MinStack(object): def __init__(self): """ initialize your data structure here. """ self.mainstack= [] self.tmpstack = []
推入元素:
def push(self, val): """ :typeval: int :rtype: None """ self.mainstack.append(val) if not self.tmpstack: self.tmpstack.append(len(self.mainstack)-1) # smaller than top of tmpstack if self.mainstack[self.tmpstack[-1]] > val: self.tmpstack.append(len(self.mainstack)-1)
出栈元素:
def pop(self): """ :rtype: None """ # min val of tmp stack equals top of mainstack if self.tmpstack and self.tmpstack[-1] == len(self.mainstack)-1: self.tmpstack.pop() return self.mainstack.pop()
def top(self): """ :rtype: int """ if self.mainstack: return self.mainstack[-1]
使用tmpstack辅助栈,换来了O(1)的查询最小复杂度
def getMin(self): """ :rtype: int """ if self.tmpstack: return self.mainstack[self.tmpstack[-1]]
关于如何在O(1)内找到实时序列的最小值问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注行业资讯频道了解更多相关知识。
元素
索引
最小
序列
分析
问题
实时
更多
帮助
解答
复杂
易行
单调
简单易行
代码
内容
只有
复杂度
实际
小伙
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
英雄联盟赛事用的是专用服务器吗
盈通a8安装连不上数据库
数据库打断设计
域名备案地区与服务器地区不一致
网络安全教育实施细则
服务器硬件维保
五大服务器的配置原理
网络安全内网络准入
软件开发技术方案有哪些
数据库中间件技术引用文献
服务器必备插件
企业认证 免费服务器
下列不是数据库的类型
supermicro服务器面板
商丘市网络安全方案
wow 英文数据库
网络安全法内容表述正确的是
重庆石柱配送生鲜软件开发
万方中文期刊数据库
hpa数据库图片如何统计分析
bim数据库有什么好处
机关网络安全核查情况报告
软件开发环境构建
excel作为数据库
升级mysql数据库
合肥地图软件开发
海宁纬编机软件开发商
未来之役游戏内服务器无法更改
潮州定制软件开发解决方案
数据库技术基础是什么课