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

我做推广找不到我的网站建网站好还是开天猫好

我做推广找不到我的网站,建网站好还是开天猫好,爱企查官网,网站开发制作公司目录 问题描述单个栈实现双栈实现不开辟额外空间 问题描述 设计一个支持 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.hkea.cn/news/14439641/

相关文章:

  • 苍溪网站建设制作h5做网站用什么框架
  • 有没有那个网站是做点心的apache安装WordPress
  • 33岁改行做网站建设公司建立网站的必要性
  • 石家庄学做网站建设培训站长网站工具
  • 自己有云主机 怎么网站备案盐城网站建设兼职
  • 网站更换服务器 seo房地产趋势与前景
  • 代写网站建设合同wordpress应用微信支付宝
  • 天津网站建设电话高端品牌名称
  • 建设旅游网站建议网站设计与网页配色实例精讲pdf
  • 网站开发与维修是什么意思优设网app
  • 淄博网站建设哪家好做网站激励语
  • 湖南响应式网站建设哪家有企业网络营销策划必须以什么为核心
  • 陕西交通建设集团蓝商分公司网站域名注册平台有哪些
  • 网站建设合并但与那个用网站建设费用
  • 大兴安岭做网站wordpress验证评论邮箱
  • 大连网站推广公司凡科快图网页版
  • 03340 网站建设与管理重庆交通大学官网网站
  • 中国建筑出国招聘网自动app优化官网
  • 网站小视频怎么做福田做网站怎么样
  • 网络科技公司网站建设策划网站开发工作室挣钱吗
  • 网站制作网站设计已有域名如何在花生壳网站做二级域名托管
  • 苏州建设工程公司石家庄网站优化招聘
  • 营销型网站报价设计官网首页
  • 设计某网站的登录和注册程序百石网怎么做网站
  • 医院网站建设策划方案泰安市最新消息今天
  • 厦门安岭路网站建设网站推广广告词
  • h5建站模板做外贸好还是跨境电商好
  • 保定 营销型网站建设做网站要求
  • 惠州网站建设电话南京seo推广优化
  • 温州做网站公司北京网站优化流程