题目描述

  • 定义栈的数据结构
  • 并在该类型中实现一个能够得到栈中所含最小元素的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相关推荐

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

    剑指offer--面试题21:包含min函数的栈 Solution1: 辅助栈! 逻辑上要想清楚..但是用栈结构来实现栈,目的不知为何... class Solution { public:void ...

  2. LeetCode剑指offer算法备战春招-包含min函数的栈

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

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

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

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

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

  5. 每日写题分享--包含min函数的栈/双栈实现

    题目描述: 题目链接:包含min函数的栈 思路: 1.建立两个栈,一个是存储所有数据并可以正常实现push,pop,peek等函数的数据栈stack1,一个是存储stack1非严格降序的辅助栈stac ...

  6. 剑指offer_第14题_链表中倒数第k个结点_Python

    题目描述 输入一个链表,输出该链表中倒数第k个结点. 理解 链表详解 python数据结构之链表 解题思路 思路1 确定链表种结点个数lenth 倒数第k个结点就是第length-k+1个结点 需要考 ...

  7. 剑指offer_第11题_二进制中1的个数

    题目描述 输入一个整数,输出该数二进制表示中1的个数. 其中负数用补码表示. 理解 整数怎么转换为二进制 >>> bin(25) '0b11001' >>> bin ...

  8. 剑指offer_第7题_斐波那契数列

    题目描述 现在要求输入一个整数n 输出斐波那契数列的第n项(从0开始,第0项为0). n<=39 理解 斐波那契数列 因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子 ...

  9. 剑指offer_第2题_替换空格

    题目描述 请实现一个函数: 将一个字符串中的每个空格替换成"%20". 例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy. 理解 ...

最新文章

  1. Oracle高级SQL培训与讲解
  2. Android的TextView在显示文字的时候,如果有段中文有英文,有中文,有中文标点符号,你会发现,当要换行的时候遇到中文标点, 这一行就会空出很多空格出来...
  3. QueryPage使用示例
  4. 技术干货 | mPaaS 框架下如何使用 Crash SDK 对闪退进行分析?
  5. Ubuntu之Docker安装
  6. 遍历集合常见的两种方式
  7. web前端开发规范总结
  8. SpringBoot2.0源码分析(二):整合ActiveMQ分析
  9. 有一个无法超越的神国,叫“外国”
  10. ArcGIS应用(十六)Arcgis 点对连线制作航空线路图
  11. html 免费站点,28个免费的HTML5网站模板
  12. 计算机国际标准编码,【计算机基础】常用编码格式
  13. ArduinoUNO实战-第一章-LED闪烁实验
  14. 2009 中国协同软件机遇年?
  15. 超级好上手的告白小程序
  16. 腾讯bugly android sdk镜像,Android 腾讯bugly接入记录教程
  17. ————博客永久废止————转到http://1su.net/nsB
  18. php 两种递归方法
  19. linux监听耳机按键,Android 中如何监听耳机键消息
  20. python骚操作!WiFi密码还能这样获取?用户扫一扫连接,无需输入密码

热门文章

  1. 测试,发布,质量保障,用户体验
  2. 永久设置SecureCRT的背景色和文字颜色方案
  3. asp vb 插入,更新,删除数据库操作。
  4. 技术图文:如何利用BigOne的API制作自动化交易系统 -- 身份验证
  5. 听说,英特尔要对外开放 x86 授权?
  6. 百变冰冰!手把手教你实现CVPR2021最新妆容迁移算法
  7. 热点 | Excel不“香”了,数据分析首选Pyhton!
  8. 启信宝CEO陈青山:AI+大数据驱动下的金融新生态
  9. 重磅!CSDN 发布「AI开源贡献奖Top5」「AI新锐公司奖Top10」「AI优秀案例奖Top30」三大榜单...
  10. 继中美之后,欧盟会成为下一个 AI 超级体吗?