python 最小栈
| 最小栈
设计一个支持 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 最小栈相关推荐
- Leetcode刷题 155题: 最小栈(基于python3和c++两种语言)
** Leetcode刷题 155题: 最小栈(基于python3和c++两种语言) ** ** 题目: ** 设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈. ...
- python 全栈开发,Day43(python全栈11期月考题)
python 全栈开发,Day43(python全栈11期月考题) python全栈11期月考题 1.常用字符串格式化有哪些?并说明他们的区别 2.请手写一个单例模式(面试题) 3.利用 python ...
- python全栈(中国历史天气可视化系统)
在前面博客中写过python爬虫爬取各个城市历史天气及数据可视化,感觉还是有点粗糙,本文章是借这个例子抛砖引玉,写出个更NB的python全栈项目. 此项目预览页面全国各城市天气可视化系统 scrap ...
- Python全栈学习day1
python 全栈开发之路 day1 本节内容 计算机发展介绍 计算机硬件组成 计算机基本原理 计算机 计算机(computer)俗称电脑,是一种用于高速计算的电子计算机器,可以进行数值计算,又可以进 ...
- python 全栈开发之路 day1
python 全栈开发之路 day1 本节内容 计算机发展介绍 计算机硬件组成 计算机基本原理 计算机 计算机(computer)俗称电脑,是一种用于高速计算的电子计算机器,可以进行数值计算,又可以进 ...
- python 全栈开发,Day45(html介绍和head标签,body标签中相关标签)
python 全栈开发,Day45(html介绍和head标签,body标签中相关标签) 一.html介绍 1.web标准 web准备介绍: w3c:万维网联盟组织,用来制定web标准的机构(组织) ...
- python全栈开发之正则表达式和python的re模块
正则表达式和python的re模块 python全栈开发,正则表达式,re模块 一 正则表达式 正则表达式(Regular Expression)是一种文本模式,包括普通字符(例如,a 到 z 之间的 ...
- Python 全栈工程师必备面试题 300 道(2020 版)
2020元旦巨献,面试升级必备!献给正在学习Python的同学! Python 全栈工程师必备面试题 300 道(2020 版) Python 面试不仅需要掌握 Python 基础知识和高级语法,还会 ...
- 唤醒手腕Python全栈工程师学习笔记(持久存储篇)
这个篇目是"持久存储篇",讲的就是Python操作数据库,这边介绍3种数据库,分别是MySQL.Redis.Mongodb 1. Python操作MySQL数据库 MySQL属于传 ...
最新文章
- 深度学习-智能视频监控
- 圆桌讨论:Cloud 2.0时代的工业互联网与智能制造
- 首次创建maven项目的准备工作
- js实现禁止右键 禁止f12 查看源代码
- menu什么意思中文意思_英文alone、lonely、lonesome 中文意思跟用法差别
- 我最喜欢的Java高级开发人员书籍
- 【iOS】从实际出发理解多线程(二)--NSThread基础操作
- 在数据库中, 不用max()/min()找出一个列中最大/最小值的记录
- python cgi库_《Python 数据库 GUI CGI编程》
- 解决layui laydate动态创建多个时不起作用点击无效的问题
- 颜色空间直方图matlab,使用Matlab绘制图像的rgb颜色空间和Lab颜色空间分量图和分量直方图 | 学步园...
- TCP/UDP套接字网络协议
- cropper.js插件做图片上传裁剪图片大小
- 设计模式-第七篇之门面模式
- I盘显示无法访问数据错误(循环冗余检查),里面的资料怎么恢复
- 关于手写unshift方法
- iphone11各机型对比_三款机型运行速度对比,iPhone11Pro表现如何?
- 维拉智能管家机器人_识人又认家 弗徕威智能机器人维拉三代正式发布
- 三态内容寻址寄存器(TCAM)
- linkbutton 的启用和禁用
热门文章
- 在数组中找到一个局部最小的位置
- python爬虫基础(一)~爬虫概念和架构
- NTU 笔记 6422quiz 复习(1~3节)
- MATLAB实战系列(二十四)-大规模邻域搜索(LNS)求解带时间窗的车辆路径问题(VRPTW)(附matlab源代码)
- Matlab 自带机器学习算法汇总
- Python学习笔记-模块介绍
- view函数_数据科学系列:数据处理(6)字符串函数基于R(二)
- 深度学习,究竟该如何学?
- Java的clone()用法实例解析
- c#如何实现在两个窗体(Form)间传输数据或变量