剑指offer_第20题_包含min函数的栈_Python
题目描述
- 定义栈的数据结构
- 并在该类型中实现一个能够得到栈中所含最小元素的min函数。时间复杂度应为O(1)
理解
- 什么是栈
- 算法复杂度
解题思路
思路1
class Solution:def __init__(self):self.stack = []self.min_stack = []def push(self, node):self.stack.append(node)if self.min_stack == [] or node <= self.min():self.min_stack.append(node)def pop(self):if self.stack != []:if self.stack[-1] == self.min_stack[-1]:self.min_stack.pop()return self.stack.pop()def top(self):return self.stack[-1]def min(self):if self.min_stack[-1] != None:return self.min_stack[-1]
拓展参考
class MinInStack:def __init__(self):self.stack = []# 存放最小值self.min_stack = []# 存放长度self.length = 0def isEmpty(self):# 判断是否为空return self.length == 0def getLength(self):# 得到栈的长度return self.lengthdef min(self):# 返回最小值if self.isEmpty():print("Stack is empty!")returnif self.min_stack:return self.min_stack[-1]def push(self, data):if not isinstance(data, int) and not isinstance(data, float):print("The element must be numeric!")return# 压栈self.stack.append(data)self.length += 1# 如果栈为空或者小于最小值if self.min_stack == [] or data < self.min():self.min_stack.append(data)else:self.min_stack.append(self.min())def pop(self):# 弹栈if self.isEmpty():print("Stack is empty!")returndata = self.stack.pop()self.min_stack.pop()self.length -= 1return datadef clear(self):# 清空栈self.stack = []self.min_stack = []self.length = 0
剑指offer_第20题_包含min函数的栈_Python相关推荐
- 剑指offer——面试题21:包含min函数的栈
剑指offer--面试题21:包含min函数的栈 Solution1: 辅助栈! 逻辑上要想清楚..但是用栈结构来实现栈,目的不知为何... class Solution { public:void ...
- LeetCode剑指offer算法备战春招-包含min函数的栈
剑指 Offer 30. 包含min函数的栈 定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调用 min.push 及 pop 的时间复杂度都是 O(1). 示例 ...
- 剑指offer:面试题30. 包含min函数的栈
题目:包含min函数的栈 定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调用 min.push 及 pop 的时间复杂度都是 O(1). MinStack min ...
- [剑指offer]面试题21:包含min函数的栈
面试题21:包含min函数的栈 题目:定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的min函数.在该栈中,调用min.push及pop的时间复杂度都是O(1). 栈内压入3.4.2.1之 ...
- 每日写题分享--包含min函数的栈/双栈实现
题目描述: 题目链接:包含min函数的栈 思路: 1.建立两个栈,一个是存储所有数据并可以正常实现push,pop,peek等函数的数据栈stack1,一个是存储stack1非严格降序的辅助栈stac ...
- 剑指offer_第14题_链表中倒数第k个结点_Python
题目描述 输入一个链表,输出该链表中倒数第k个结点. 理解 链表详解 python数据结构之链表 解题思路 思路1 确定链表种结点个数lenth 倒数第k个结点就是第length-k+1个结点 需要考 ...
- 剑指offer_第11题_二进制中1的个数
题目描述 输入一个整数,输出该数二进制表示中1的个数. 其中负数用补码表示. 理解 整数怎么转换为二进制 >>> bin(25) '0b11001' >>> bin ...
- 剑指offer_第7题_斐波那契数列
题目描述 现在要求输入一个整数n 输出斐波那契数列的第n项(从0开始,第0项为0). n<=39 理解 斐波那契数列 因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子 ...
- 剑指offer_第2题_替换空格
题目描述 请实现一个函数: 将一个字符串中的每个空格替换成"%20". 例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy. 理解 ...
最新文章
- Oracle高级SQL培训与讲解
- Android的TextView在显示文字的时候,如果有段中文有英文,有中文,有中文标点符号,你会发现,当要换行的时候遇到中文标点, 这一行就会空出很多空格出来...
- QueryPage使用示例
- 技术干货 | mPaaS 框架下如何使用 Crash SDK 对闪退进行分析?
- Ubuntu之Docker安装
- 遍历集合常见的两种方式
- web前端开发规范总结
- SpringBoot2.0源码分析(二):整合ActiveMQ分析
- 有一个无法超越的神国,叫“外国”
- ArcGIS应用(十六)Arcgis 点对连线制作航空线路图
- html 免费站点,28个免费的HTML5网站模板
- 计算机国际标准编码,【计算机基础】常用编码格式
- ArduinoUNO实战-第一章-LED闪烁实验
- 2009 中国协同软件机遇年?
- 超级好上手的告白小程序
- 腾讯bugly android sdk镜像,Android 腾讯bugly接入记录教程
- ————博客永久废止————转到http://1su.net/nsB
- php 两种递归方法
- linux监听耳机按键,Android 中如何监听耳机键消息
- python骚操作!WiFi密码还能这样获取?用户扫一扫连接,无需输入密码
热门文章
- 测试,发布,质量保障,用户体验
- 永久设置SecureCRT的背景色和文字颜色方案
- asp vb 插入,更新,删除数据库操作。
- 技术图文:如何利用BigOne的API制作自动化交易系统 -- 身份验证
- 听说,英特尔要对外开放 x86 授权?
- 百变冰冰!手把手教你实现CVPR2021最新妆容迁移算法
- 热点 | Excel不“香”了,数据分析首选Pyhton!
- 启信宝CEO陈青山:AI+大数据驱动下的金融新生态
- 重磅!CSDN 发布「AI开源贡献奖Top5」「AI新锐公司奖Top10」「AI优秀案例奖Top30」三大榜单...
- 继中美之后,欧盟会成为下一个 AI 超级体吗?