剑指 Offer 30. 包含min函数的栈
定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调用 min、push 及 pop 的时间复杂度都是 O(1)。

示例:

MinStack minStack = new MinStack();
minStack.push(-2);
minStack.push(0);
minStack.push(-3);
minStack.min(); --> 返回 -3.
minStack.pop();
minStack.top(); --> 返回 0.
minStack.min(); --> 返回 -2.

提示:

各函数的调用总次数不超过 20000 次

class MinStack:def __init__(self):"""initialize your data structure here."""self.stack = []  #数据栈self.min_stack = [] #辅助栈def push(self, x: int) -> None:self.stack.append(x)if self.min_stack == []:self.min_stack.append(x)else:# 比较栈中元素self.min_stack.append(min(x,self.min_stack[-1])) #弹出栈顶def pop(self) -> None:self.stack.pop(-1)self.min_stack.pop(-1)def top(self) -> int:return self.stack[-1]def min(self) -> int:return self.min_stack[-1]# Your MinStack object will be instantiated and called as such:
# obj = MinStack()
# obj.push(x)
# obj.pop()
# param_3 = obj.top()
# param_4 = obj.min()

思路
使用一个辅助栈min_stack,用来维护栈的最小的元素
每次添加元素入栈时候,data_stack和min_stack都要同时维护
data_stack按照正常的栈压入和弹出顺序,但是min_stack栈不一样,因为要能获取当前栈的最小元素:
如果栈是空的,直接入栈;
如果栈不是空的,比较栈中元素,取最小压入栈中。

剑指 Offer 30. 包含min函数的栈 (python实现)相关推荐

  1. 剑指Offer 30.包含 min 函数的栈(Python)

    定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调用 min.top.push 及 pop 的时间复杂度都是 O(1). # 例子: MinStack minSta ...

  2. 《LeetCode力扣练习》剑指 Offer 30. 包含min函数的栈 Java

    <LeetCode力扣练习>剑指 Offer 30. 包含min函数的栈 Java 一.资源 题目: 定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调 ...

  3. 【LeetCode】剑指 Offer 30. 包含min函数的栈

    [LeetCode]剑指 Offer 30. 包含min函数的栈 文章目录 [LeetCode]剑指 Offer 30. 包含min函数的栈 一.辅助栈 一.辅助栈 解题思路: 普通栈的 push() ...

  4. Python描述 LeetCode 剑指 Offer 30. 包含min函数的栈

    Python描述 LeetCode 剑指 Offer 30. 包含min函数的栈   大家好,我是亓官劼(qí guān jié ),在[亓官劼]公众号.CSDN.GitHub.B站等平台分享一些技术 ...

  5. 【简洁写法】剑指 Offer 30. 包含min函数的栈

    立志用最少的代码做最高效的表达 定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调用 min.push 及 pop 的时间复杂度都是 O(1). 示例: MinSt ...

  6. 剑指offer——30.包含min函数的栈

    题目: 定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1)). 知识点: 这种需要持续输出最小或最大的数的解决办法之一:引入辅助栈 注意: 无 代码实现 ...

  7. 剑指offer:包含min函数的栈 python实现

    题目 题目描述 定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1)). 解题思路 暴力做法: 遍历一遍,找最小的数,然后返回. # -*- coding ...

  8. 【算法】剑指 Offer 30. 包含min函数的栈

    文章目录 1.概述 2.分析 3. 链表法 4. 双栈法 1.概述 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/bao-han-minhan ...

  9. 剑指 Offer 30. 包含min函数的栈

    定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调用 min.push 及 pop 的时间复杂度都是 O(1). 示例: MinStack minStack = n ...

最新文章

  1. 巧用gh-pages分支发布自己的静态项目
  2. python基础===Python 代码优化常见技巧
  3. Android Vector笔记
  4. 【移动战略说·第十六期】创业者面临的机遇与挑战(杭州站)
  5. 幸福指数测试软件,测试你和ta的幸福指数能不能爆表
  6. DotText使用非80端口(默认端口)时URL出错
  7. Linux开启和关闭防火墙的方法
  8. Linux 命令(97)—— info 命令
  9. 第12章类和动态内存分配
  10. 语义模型及自然语言处理系统基础算法
  11. SQL 获取当前日期上一个月的日期
  12. Android关于对话框,Android对话框(Dialog)完全使用手册
  13. 基于SSM生产计划排程管理系统
  14. 比尔·盖茨的另一扇视窗
  15. 克服神经网络中的灾难性遗忘(EWC):Overcoming catastrophic forgetting inneural networks
  16. Java基础冒泡排序——高低输出十个学生的成绩
  17. 查看服务器内存型号及主频
  18. DoTween插件的基本操作总结
  19. F81E657Se-SL
  20. AVAssetWriter 输出视频文件在ios8上的结束

热门文章

  1. weblogic容器通过JSP页面输出图片出现乱码Tomcat下却正常
  2. ES6/ES7常用语法记录
  3. lpop 原子_中考必考丨化学原子、分子等6大基础知识点,送分秘籍!
  4. AVR446:步进电机的线速度控制
  5. 【Try to Hack】防火墙(一)
  6. 惊人!2022年我国游戏直播用户规模高达3.82亿人,市场规模1108亿元
  7. 线程学习一 _beginthread
  8. 复旦大学计算机系学生,对复旦大学计算机系数据库课程的评价.doc
  9. iOS系统H264视频硬件编解码说明
  10. golang的Once研究