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

wordpress网站如何清理js网站推广方案

wordpress网站如何清理js,网站推广方案,企业网站做seo,网页设计师培训班招生目录 问题描述单个栈实现双栈实现不开辟额外空间 问题描述 设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。 实现 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.yidumall.com/news/104488.html

相关文章:

  • 免费网站建设网站推广百度seo排名帝搜软件
  • 开源建站工具北大青鸟
  • 做美食网站有哪些今日重大新闻头条十条
  • 大连 做 企业网站深圳网站营销seo费用
  • 手机网站打开微信号在线工具
  • 寻花问柳专注做一家男人最爱的网站保定百度seo排名
  • wordpress 采集 json杭州seo排名优化
  • 一流的网站建设哪家好5月疫情第二波爆发
  • 怎么在淘宝上做网站seo优化网站推广专员招聘
  • 网站备份和备案的区别南宁seo推广公司
  • wordpress js 代码抖音矩阵排名软件seo
  • 响应式网站制作免费友情链接网页
  • 做网站话挣钱吗推广产品吸引人的句子
  • 云南照明网站建设西安seo外包公司
  • 免费网站建设seo佛山做网络优化的公司
  • 做站长建不好网站数据分析方法
  • 网站外链建设可以提升网站权重对还是错长沙关键词优化方法
  • 重庆企业网站建设哪家好上海关键词自动排名
  • 上海网站快速备案在线域名ip查询
  • 网站建设 长春百度网络营销
  • 广东建设信息网站天津seo关键词排名优化
  • 手机网站广告有创意的营销策划案例
  • 做外贸需要哪些网站seo推广的公司
  • 网站商业授权含义广告优化师的工作内容
  • 东莞做网站微信巴巴百度知道小程序
  • 做文字图片的网站手机360优化大师官网
  • 一个好的网站应该具有什么今日头条热搜榜前十名
  • wordpress+谷歌加速seo诊断分析报告
  • eclipse tomcat 网站开发今天微博热搜前十名
  • php做直播类型的网站数据分析师35岁以后怎么办