Python实现包含min函数的栈


Posted in Python onApril 29, 2016

本文实例讲述了Python实现包含min函数的栈。分享给大家供大家参考,具体如下:

# coding=utf8
'''
题目:定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的min函数。
在该栈中,调用min、push及pop的时间复杂度都是O(1)。
'''
class Stack():
  def __init__(self):
    self.main_stack = []
    # 辅助栈,每次次最小的元素压入辅助栈
    self.assist_stack = []
    # 记录栈中的最小元素
    self._min = None
  def min(self):
    return self._min
  def push(self, data):
    self.main_stack.append(data)
    if self._min is None:
      self._min = data
    else:
      if data < self._min:
        self._min = data
    # 将最小的元素压入辅助栈
    self.assist_stack.append(self._min)
  def pop(self):
    if len(self.main_stack) == 0:
      raise Exception('no data')
    elif len(self.main_stack) == 1:
      self.assist_stack.pop()
      self._min = None
      return self.main_stack.pop()
    else:
      self.assist_stack.pop()
      self._min = self.assist_stack[-1]
      return self.main_stack.pop()
if __name__ == '__main__':
  s = Stack()
  s.push(3)
  s.push(4)
  s.push(2)
  s.push(1)
  print s.min()
  s.pop()
  s.pop()
  print s.min()
  s.pop()
  print s.min()
  s.pop()
  print s.min()
  s.pop()

更多关于Python相关内容可查看本站专题:《Python正则表达式用法总结》、《Python数据结构与算法教程》、《Python Socket编程技巧总结》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
python实现网页链接提取的方法分享
Feb 25 Python
python base64 decode incorrect padding错误解决方法
Jan 08 Python
老生常谈python之鸭子类和多态
Jun 13 Python
python引入导入自定义模块和外部文件的实例
Jul 24 Python
Python实现的中国剩余定理算法示例
Aug 05 Python
Python数据分析之如何利用pandas查询数据示例代码
Sep 01 Python
python看某个模块的版本方法
Oct 16 Python
PythonWeb项目Django部署在Ubuntu18.04腾讯云主机上
Apr 01 Python
使用python实现哈希表、字典、集合操作
Dec 22 Python
python读取Kafka实例
Dec 23 Python
如何实现在jupyter notebook中播放视频(不停地展示图片)
Apr 23 Python
Python+pyaudio实现音频控制示例详解
Jul 23 Python
Python二叉搜索树与双向链表转换实现方法
Apr 29 #Python
Python实现简单字典树的方法
Apr 29 #Python
Python中操作符重载用法分析
Apr 29 #Python
Python中绑定与未绑定的类方法用法分析
Apr 29 #Python
Python过滤列表用法实例分析
Apr 29 #Python
Python松散正则表达式用法分析
Apr 29 #Python
python中私有函数调用方法解密
Apr 29 #Python
You might like
关于PHP内存溢出问题的解决方法
2013/06/25 PHP
php操作(删除,提取,增加)zip文件方法详解
2015/03/12 PHP
Zend Framework连接Mysql数据库实例分析
2016/03/19 PHP
PhpStorm2020.1 安装 debug - Postman 调用的详细教程
2020/08/17 PHP
myEvent.js javascript跨浏览器事件框架
2011/10/24 Javascript
javascript解析json数据的3种方式
2014/05/08 Javascript
详解jQuery Mobile自定义标签
2016/01/06 Javascript
基于jQuery实现点击最后一行实现行自增效果的表格
2016/01/12 Javascript
JS常用知识点整理
2017/01/21 Javascript
JS Select下拉框(支持输入模糊查询)
2017/02/04 Javascript
Bootstrap进度条学习使用
2017/02/09 Javascript
jQuery remove()过滤被删除的元素(推荐)
2017/07/18 jQuery
使用vue实现简单键盘的示例(支持移动端和pc端)
2017/12/25 Javascript
浅谈vue项目可以从哪些方面进行优化
2018/05/05 Javascript
Node.js如何优雅的封装一个实用函数的npm包的方法
2019/04/29 Javascript
ES6中Set和Map用法实例详解
2020/03/02 Javascript
jquery实现图片放大镜效果
2020/12/23 jQuery
Python的math模块中的常用数学函数整理
2016/02/04 Python
Python图算法实例分析
2016/08/13 Python
python3.6.3安装图文教程 TensorFlow安装配置方法
2020/06/24 Python
Python脚本按照当前日期创建多级目录
2019/03/01 Python
两个元祖T1=('a', 'b'),T2=('c', 'd')使用匿名函数将其转变成[{'a': 'c'},{'b': 'd'}]的几种方法
2019/03/05 Python
Python中numpy模块常见用法demo实例小结
2019/03/16 Python
django实现用户注册实例讲解
2019/10/30 Python
python实现将列表中各个值快速赋值给多个变量
2020/04/02 Python
pip安装tensorflow的坑的解决
2020/04/19 Python
意大利网上书店:LaFeltrinelli
2020/06/12 全球购物
财会自我鉴定范文
2013/12/27 职场文书
运动会广播稿20字
2014/02/18 职场文书
网络管理专业求职信
2014/03/15 职场文书
品酒会策划方案
2014/05/26 职场文书
安全责任书怎么写
2014/07/28 职场文书
2014最新房贷收入证明范本
2014/09/12 职场文书
2015年小学中秋节活动总结
2015/03/23 职场文书
Python NumPy灰度图像的压缩原理讲解
2021/08/04 Python
Python 数据结构之十大经典排序算法一文通关
2021/10/16 Python