| 最小栈

设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。
push(x) —— 将元素 x 推入栈中。
pop() —— 删除栈顶的元素。
top() —— 获取栈顶元素。
getMin() —— 检索栈中的最小元素。示例:
输入:
["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.

| 题解

class MinStack:"""题目要求在常数时间内获得栈中的最小值,因此不能在 getMin() 的时候再去计算最小值,最好应该在 push 或者 pop 的时候就已经计算好了当前栈中的最小值。
可以用一个栈,这个栈同时保存的是每个数字 x 进栈的时候的值 与 插入该值后的栈内最小值。即每次新元素 x 入栈的时候保存一个元组:(当前值 x,栈内最小值)。
这个元组是一个整体,同时进栈和出栈。即栈顶同时有值和栈内最小值,top()函数是获取栈顶的当前值,即栈顶元组的第一个值; getMin() 函数是获取栈内最小值,即栈顶元组的第二个值;pop() 函数时删除栈顶的元组。
每次新元素入栈时,要求新的栈内最小值:比较当前新插入元素 x 和 当前栈内最小值(即栈顶元组的第二个值)的大小。
新元素入栈:当栈为空,保存元组 (x, x);当栈不空,保存元组 (x, min(此前栈内最小值, x)))
出栈:删除栈顶的元组。"""def __init__(self):self.stack = []def push(self, val: int) -> None:if not self.stack:self.stack.append((val, val))else:self.stack.append((val, min(val, self.stack[-1][-1])))def pop(self) -> None:self.stack.pop()def top(self) -> int:return self.stack[-1][0]def getMin(self) -> int:return self.stack[-1][-1]# Your MinStack object will be instantiated and called as such:
# obj = MinStack()
# obj.push(val)
# obj.pop()
# param_3 = obj.top()
# param_4 = obj.getMin()

python 最小栈相关推荐

  1. Leetcode刷题 155题: 最小栈(基于python3和c++两种语言)

    ** Leetcode刷题 155题: 最小栈(基于python3和c++两种语言) ** ** 题目: ** 设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈. ...

  2. python 全栈开发,Day43(python全栈11期月考题)

    python 全栈开发,Day43(python全栈11期月考题) python全栈11期月考题 1.常用字符串格式化有哪些?并说明他们的区别 2.请手写一个单例模式(面试题) 3.利用 python ...

  3. python全栈(中国历史天气可视化系统)

    在前面博客中写过python爬虫爬取各个城市历史天气及数据可视化,感觉还是有点粗糙,本文章是借这个例子抛砖引玉,写出个更NB的python全栈项目. 此项目预览页面全国各城市天气可视化系统 scrap ...

  4. Python全栈学习day1

    python 全栈开发之路 day1 本节内容 计算机发展介绍 计算机硬件组成 计算机基本原理 计算机 计算机(computer)俗称电脑,是一种用于高速计算的电子计算机器,可以进行数值计算,又可以进 ...

  5. python 全栈开发之路 day1

    python 全栈开发之路 day1 本节内容 计算机发展介绍 计算机硬件组成 计算机基本原理 计算机 计算机(computer)俗称电脑,是一种用于高速计算的电子计算机器,可以进行数值计算,又可以进 ...

  6. python 全栈开发,Day45(html介绍和head标签,body标签中相关标签)

    python 全栈开发,Day45(html介绍和head标签,body标签中相关标签) 一.html介绍 1.web标准 web准备介绍: w3c:万维网联盟组织,用来制定web标准的机构(组织) ...

  7. python全栈开发之正则表达式和python的re模块

    正则表达式和python的re模块 python全栈开发,正则表达式,re模块 一 正则表达式 正则表达式(Regular Expression)是一种文本模式,包括普通字符(例如,a 到 z 之间的 ...

  8. Python 全栈工程师必备面试题 300 道(2020 版)

    2020元旦巨献,面试升级必备!献给正在学习Python的同学! Python 全栈工程师必备面试题 300 道(2020 版) Python 面试不仅需要掌握 Python 基础知识和高级语法,还会 ...

  9. 唤醒手腕Python全栈工程师学习笔记(持久存储篇)

    这个篇目是"持久存储篇",讲的就是Python操作数据库,这边介绍3种数据库,分别是MySQL.Redis.Mongodb 1. Python操作MySQL数据库 MySQL属于传 ...

最新文章

  1. 深度学习-智能视频监控
  2. 圆桌讨论:Cloud 2.0时代的工业互联网与智能制造
  3. 首次创建maven项目的准备工作
  4. js实现禁止右键 禁止f12 查看源代码
  5. menu什么意思中文意思_英文alone、lonely、lonesome 中文意思跟用法差别
  6. 我最喜欢的Java高级开发人员书籍
  7. 【iOS】从实际出发理解多线程(二)--NSThread基础操作
  8. 在数据库中, 不用max()/min()找出一个列中最大/最小值的记录
  9. python cgi库_《Python 数据库 GUI CGI编程》
  10. 解决layui laydate动态创建多个时不起作用点击无效的问题
  11. 颜色空间直方图matlab,使用Matlab绘制图像的rgb颜色空间和Lab颜色空间分量图和分量直方图 | 学步园...
  12. TCP/UDP套接字网络协议
  13. cropper.js插件做图片上传裁剪图片大小
  14. 设计模式-第七篇之门面模式
  15. I盘显示无法访问数据错误(循环冗余检查),里面的资料怎么恢复
  16. 关于手写unshift方法
  17. iphone11各机型对比_三款机型运行速度对比,iPhone11Pro表现如何?
  18. 维拉智能管家机器人_识人又认家 弗徕威智能机器人维拉三代正式发布
  19. 三态内容寻址寄存器(TCAM)
  20. linkbutton 的启用和禁用

热门文章

  1. 在数组中找到一个局部最小的位置
  2. python爬虫基础(一)~爬虫概念和架构
  3. NTU 笔记 6422quiz 复习(1~3节)
  4. MATLAB实战系列(二十四)-大规模邻域搜索(LNS)求解带时间窗的车辆路径问题(VRPTW)(附matlab源代码)
  5. Matlab 自带机器学习算法汇总
  6. Python学习笔记-模块介绍
  7. view函数_数据科学系列:数据处理(6)字符串函数基于R(二)
  8. 深度学习,究竟该如何学?
  9. Java的clone()用法实例解析
  10. c#如何实现在两个窗体(Form)间传输数据或变量