当前位置: 首页 > news >正文

建立企业网站 优帮云做欧美市场的网站

建立企业网站 优帮云,做欧美市场的网站,做照片有那些网站好,泛微oa办公系统官网目录 问题描述单个栈实现双栈实现不开辟额外空间 问题描述 设计一个支持 push #xff0c;pop #xff0c;top 操作#xff0c;并能在常数时间内检索到最小元素的栈。 实现 MinStack 类: MinStack() 初始化堆栈对象。 void push(int val) 将元素val推入堆栈。 void pop()… 目录 问题描述单个栈实现双栈实现不开辟额外空间 问题描述 设计一个支持 push pop top 操作并能在常数时间内检索到最小元素的栈。 实现 MinStack 类: MinStack() 初始化堆栈对象。 void push(int val) 将元素val推入堆栈。 void pop() 删除堆栈顶部的元素。 int top() 获取堆栈顶部的元素。 int getMin() 获取堆栈中的最小元素。 示例 1: 输入 [“MinStack”,“push”,“push”,“push”,“getMin”,“pop”,“top”,“getMin”] [[],[-2],[0],[-3],[],[],[],[]] 输出 [null,null,null,null,-3,null,0,-2] 解释 MinStack minStack new MinStack(); minStack.push(-2); minStack.push(0); minStack.push(-3); minStack.getMin(); -- 返回 -3. minStack.pop(); minStack.top(); -- 返回 0. minStack.getMin(); -- 返回 -2. 单个栈实现 题目只是要求 在常数时间内检索到最小元素 对其他操作没有要求那么可以牺牲 pop() 操作的性能是一种可行的办法。 class MinStack:def __init__(self):self.stack []self.min float(inf)def push(self, val: int) - None:self.stack.append(val)if self.min val:self.min valdef pop(self) - None:s self.stack.pop()if self.stack:if s self.min:self.min min(self.stack)else:self.min float(inf)def top(self) - int:return self.stack[-1]def getMin(self) - int:return self.min getMin() 方法的算法复杂度为 O ( 1 ) O(1) O(1) 如果做 n 次进栈出栈操作算法总的复杂度为 O ( N 2 ) O(N^2) O(N2) 双栈实现 进一步来说如果出栈的复杂度不想那么高的话可以使用一点额外空间来换取速度。 具体来说再维护一个最小栈顶部存储当前栈中元素的最小值。 class MinStack:def __init__(self):self.stack []self.min_stack []def push(self, val: int) - None:if not self.stack or self.getMin() val:self.min_stack.append(val)else:self.min_stack.append(self.getMin())self.stack.append(val)def pop(self) - None:self.stack.pop()self.min_stack.pop()def top(self) - int:return self.stack[-1]def getMin(self) - int:return self.min_stack[-1] getMin() 方法的算法复杂度为 O ( 1 ) O(1) O(1) 如果做 n 次进栈出栈操作算法总的复杂度为 O ( N ) O(N) O(N) 不开辟额外空间 网上有人说他在面试的时候被要求不额外开辟空间下面列了我找到的答案。 相当于把 双栈实现 中的双栈合并为单个栈于是栈里存储最小值和当前值之间的差值。每一次出栈的时候通过这个插值还原出上一个时刻的最小值。 class MinStack:def __init__(self):initialize your data structure here.self.stack []self.min_value -1def push(self, x: int) - None:if not self.stack:self.stack.append(0)self.min_value xelse:diff x-self.min_valueself.stack.append(diff)self.min_value self.min_value if diff 0 else xdef pop(self) - None:if self.stack:diff self.stack.pop()if diff 0:top self.min_valueself.min_value top - diffelse:top self.min_value diffreturn topdef top(self) - int:return self.min_value if self.stack[-1] 0 else self.stack[-1] self.min_valuedef getMin(self) - int:return self.min_value if self.stack else -1 getMin() 方法的算法复杂度为 O ( 1 ) O(1) O(1) 如果做 n 次进栈出栈操作算法总的复杂度为 O ( N ) O(N) O(N)
http://www.w-s-a.com/news/632064/

相关文章:

  • 成都建站平台自己做一个网站需要多少钱
  • 景区旅游网站平台建设公司企业网站源码
  • 免费高清网站推荐喂来苏州网络科技有限公司
  • php做的大型网站有哪些备案博客域名做视频网站会怎么样
  • 去哪网站备案吗昭通网站建设
  • flash企业网站源码建筑材料采购网站
  • 网站可以换虚拟主机吗部门做网站优点
  • 如何做分类网站信息营销莱芜网页定制
  • 班级网站建设感想中国做视频网站有哪些
  • 做刷票的网站wordpress图片链接插件
  • 给客户做网站图片侵权沈阳做网站的地方
  • 网站开发步骤规划蓝天云免费空间主机
  • 网站字体规范wordpress找不到页面内容编辑
  • 静态网站建设参考文献茂名营销型网站制作公司
  • 君山区建设局网站风铃微网站怎么做
  • 购物网站销售管理合肥网络推广平台
  • 网站建设规划书txt微盘注册帐号
  • 小说网站开发实训报告企业网盘收费标准
  • mvc网站开发医疗医院网站建设
  • 天津市建设厅官方网站wordpress设置404
  • 贵阳好的网站建设免费正能量网站下载ww
  • 免费学习的网站平台自建站seo如何做
  • 海南三亚做网站公众号版面设计创意
  • 学校网站建设目的与意义合肥网页定制
  • 网站查询地址网站建设与维护费用
  • 做网站哪些软件比较好合肥外贸网站建设公司
  • 建网站需要哪些条件专业网站设计报价
  • 定制网站开发技术化妆品的网站布局设计图片大全
  • 网站模糊设计发布产品的免费平台有哪些
  • 网站建站什么目录桂林网站建设内容