题目描述

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

思路

详见链接

代码

class MinStack:def __init__(self):self.A, self.B = [], []def push(self, x:int)->None:self.A.append(x)if not self.B and self.B[-1] >= x:self.B.append(x)def pop(self)->None:if self.A.pop() == self.B[-1]:self.B.pop()def top(self)->int:return self.A[-1]def min(self)->int:return self.B[-1]

复杂度

时间复杂度 O(1) : push(), pop(), top(), min() 四个函数的时间复杂度均为常数级别。
空间复杂度 O(N): 当共有 N个待入栈元素时,辅助栈 BB 最差情况下存储 N 个元素,使用 O(N) 额外空间。

剑指offer面试题30. 包含min函数的栈(辅助栈)相关推荐

  1. 剑指offer面试题[21]包含min函数的栈

    题目: 定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数. 分析: 看到这个问题,我们的第一反应可能是每次压入一个新元素进栈时,将栈里所有的元素排序,让最小的元位于栈顶,这样就能在 ...

  2. 剑指offer(20)包含min函数的栈

    import java.util.Stack;public class Solution {//创建俩个辅助栈,stack1用来存放压入的元素,stack2用来保存较小元素Stack<Integ ...

  3. 剑指offer面试题[30]-最小的k个数

    题目描述 输入n个整数,找出其中最小的K个数.例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4. 分析思路:         这道题最简单的思路莫过于把输入的n个数排 ...

  4. 剑指offer:面试题30. 包含min函数的栈

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

  5. 【剑指offer-Java版】21包含min函数的栈

    包含min操作的栈:在基本栈基础上提供一个Min功能,可以取得当前栈的最小值 重点在于思路,拿空间换取了Min的功能,申请一个等量空间的辅助栈用于存取栈中的最小元素 public class _Q21 ...

  6. [剑指offer]面试题1:赋值运算符函数

    面试题1:赋值运算符函数 题目:如下为类型CMyString的声明,请为该类型添加赋值运算符函数. class CMyString {public:CMyString(char *pData = nu ...

  7. 剑指Offer——面试题30:最小的K个数

    题目:输入N个数字,找出其中最小的K个数. 思路:维护一个数组KMin,长度为K,存放最小的K个数.遍历原始数组的过程中,如果KMin不满,就直接在后边插入新的数字:如果KMin满了,就要找到其中最大 ...

  8. (剑指Offer)面试题1:赋值运算符函数

    题目: 如下为类型CMyString的声明,请为该类型添加赋值运算符函数. class CMyString{ public:     CMyString(char* pData=NULL);     ...

  9. 剑指Offer - 面试题6. 从尾到头打印链表(栈,递归,反转链表)

    文章目录 1. 题目 2. 解题 2.1 stack解题 2.2 递归 2.3 反转链表 1. 题目 输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回). 示例 1: 输入:head ...

最新文章

  1. 结构化方法与面向对象方法的比较
  2. 数学建模学习笔记——模糊综合评价模型(评价类,发放问卷一般不用)
  3. win10中微软账户中文名称修改后本地用户文件夹仍为中文名
  4. java读写注册表的两种方式,Preferences与jRegistry
  5. boot lib分离 spring_spring boot + gradle打包bootJar分离lib
  6. 浅析Thinkphp3.0的行为扩展模式
  7. jbpm 5 安装教程
  8. nc 发布元数据_智联科发布新一代连续式NC膜粘膜划膜一体机
  9. 统计月读(2019年5月)
  10. 为什么下拉框拉不下来_为什么分手后对方不删除拉黑你,但又不和你复合?
  11. (黑科技)超链接记录贴
  12. masscan端口扫描
  13. 贾俊平统计学思维导图- 第二章 数据搜集
  14. 如何更改Eclipse中Properties文件编码格式
  15. Android学习系列(33)--App应用之提交到各大市场渠道
  16. python入门之运算符的使用的答案_python基础课程 第2章 (运算符)
  17. hive表加载csv格式数据或者json格式数据
  18. 旧苹果短信导入新苹果手机上,iphone短信迁移
  19. ldo和dcdc功耗_LDO与DC-DC对比分析
  20. 赶紧收藏,都在用的四种标题写法

热门文章

  1. 判断PHP变量的类型
  2. 随笔 | 写代码时极有可能面临的焦虑
  3. Windows Terminal 窗口/控制台切换快捷键总结
  4. 清北大学计算机专业学习清单,好专业都在清北交复?快来看看这份院校清单,拥有着全国排名【NO.1】的专业...
  5. Qt部件学习之-烧鹅
  6. 2019年计算机学业水平测试填空题,2019年计算机学业水平模拟测试选择题80题Word(含参考答案)...
  7. 挑战程序设计竞赛(第2版) 第3章笔记
  8. 软件构架、架构和框架的区别
  9. Nagios_快速配置
  10. c语言中动态数组的实现