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

视频网站自己做服务器会计培训班一般多少钱

视频网站自己做服务器,会计培训班一般多少钱,建设网站要什么时候开始,wordpress数据库排序规则LeetCode 热题 100 | 155. 最小栈 大家好!今天我们来解决一道经典的算法题——最小栈。这道题要求我们设计一个支持 push、pop、top 操作,并能在常数时间内检索到最小元素的栈。下面我将详细讲解解题思路,并附上Python代码实现。 一、问题描…

LeetCode 热题 100 | 155. 最小栈

大家好!今天我们来解决一道经典的算法题——最小栈。这道题要求我们设计一个支持 pushpoptop 操作,并能在常数时间内检索到最小元素的栈。下面我将详细讲解解题思路,并附上Python代码实现。


一、问题描述

设计一个支持以下操作的栈:

  1. MinStack():初始化栈对象。
  2. void push(int val):将元素 val 推入栈。
  3. void pop():删除栈顶部的元素。
  4. int top():获取栈顶部的元素。
  5. int getMin():获取栈中的最小元素。

要求所有操作的时间复杂度为 O(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.

二、解题思路

核心思想

为了在常数时间内获取栈中的最小元素,我们需要在每次操作时维护当前栈的最小值。具体方法如下:

  1. 辅助栈
    • 使用两个栈:一个主栈 stack 用于存储所有元素,一个辅助栈 minStack 用于存储当前栈的最小值。
    • 每次 push 时,将元素压入主栈,并将当前最小值压入辅助栈。
    • 每次 pop 时,同时从主栈和辅助栈中弹出元素。
    • getMin 操作直接返回辅助栈的栈顶元素。

代码实现

class MinStack:def __init__(self):# 初始化主栈和辅助栈self.stack = []self.minStack = []def push(self, val: int) -> None:# 将元素压入主栈self.stack.append(val)# 将当前最小值压入辅助栈if not self.minStack or val < self.minStack[-1]:self.minStack.append(val)else:self.minStack.append(self.minStack[-1])def pop(self) -> None:# 从主栈和辅助栈中弹出元素self.stack.pop()self.minStack.pop()def top(self) -> int:# 返回主栈的栈顶元素return self.stack[-1]def getMin(self) -> int:# 返回辅助栈的栈顶元素,即当前栈的最小值return self.minStack[-1]

代码解析

  1. 初始化

    • __init__ 方法中,初始化两个栈:stackminStack
  2. push 操作

    • 将元素压入主栈 stack
    • 如果辅助栈为空或新元素小于辅助栈的栈顶元素,则将新元素压入辅助栈;否则,将辅助栈的栈顶元素再次压入辅助栈。
  3. pop 操作

    • 同时从主栈和辅助栈中弹出元素。
  4. top 操作

    • 返回主栈的栈顶元素。
  5. getMin 操作

    • 返回辅助栈的栈顶元素,即当前栈的最小值。

复杂度分析

  • 时间复杂度:所有操作的时间复杂度均为 O(1)。
  • 空间复杂度:O(n),其中 n 是栈中元素的数量。辅助栈 minStack 的大小与主栈相同。

示例运行

示例1
# 创建 MinStack 对象
minStack = MinStack()
# 执行操作
minStack.push(-2)
minStack.push(0)
minStack.push(-3)
print(minStack.getMin())  # 输出 -3
minStack.pop()
print(minStack.top())     # 输出 0
print(minStack.getMin())  # 输出 -2

输出

-3
0
-2

总结

通过使用辅助栈,我们可以在常数时间内实现 pushpoptopgetMin 操作。这种方法不仅简单高效,而且易于理解和实现。希望这篇题解对大家有所帮助,如果有任何问题,欢迎在评论区留言讨论!

关注我,获取更多算法题解和编程技巧!

http://www.dtcms.com/wzjs/106643.html

相关文章:

  • 电商网站seo怎么做seo排名优化工具
  • 大连网络建站公司分析广州网络营销
  • 备案的网站 ,能拿来做仿站吗网站关键词提升
  • 建立手机个人网站app开发价格表
  • 合肥营销型网站建设百度推广投诉人工电话
  • 重庆便宜网站建设全文搜索引擎有哪些
  • 有哪些网站是html5的网络营销服务工具
  • dw网站引导页怎么做江苏免费关键词排名外包
  • 做的好的企业网站企业推广网络营销
  • 考试微网站开发合肥关键词排名推广
  • 临沂做网站的产品推广公司
  • 留学网站建设文案seo营销外包
  • 做暧小视频xo免费网站百度权重查询网址
  • 自考本科报名官网入口济南seo快速霸屏
  • 企业为什么做网站seo关键词怎么填
  • 宁波品牌网站公司排名百度关键词查询排名
  • 网站后台尺寸一般做多大的上海网络seo
  • 包装设计网站排行榜可以搜任何网站的浏览器
  • 郑州做品牌网站的公司互联网营销推广怎么做
  • 还有哪些网站可以做淘宝活动内容营销成功案例
  • 网站界面设计套题常见的网络营销推广方式有哪些
  • wordpress+扫码付款吉林刷关键词排名优化软件
  • 网站建设归工商局管还是工信局管外贸软件排行榜
  • 网站开发后端开发建什么网站可以长期盈利
  • 佛山网站建站推广汕头seo外包机构
  • hexo到WordPressseo和sem
  • 木材模板.网站精准营销系统
  • 17做网店类似网站代写文章
  • 上海市人民政府门户网站seo顾问能赚钱吗
  • asp与java做网站效果广东网络推广运营