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 相关文章推荐
Python3.0与2.X版本的区别实例分析
Aug 25 Python
Python 的内置字符串方法小结
Mar 15 Python
Python实现读取SQLServer数据并插入到MongoDB数据库的方法示例
Jun 09 Python
详解TensorFlow查看ckpt中变量的几种方法
Jun 19 Python
ZABBIX3.2使用python脚本实现监控报表的方法
Jul 02 Python
pycharm重命名文件的方法步骤
Jul 29 Python
对Pytorch神经网络初始化kaiming分布详解
Aug 18 Python
Python读取VOC中的xml目标框实例
Mar 10 Python
python实现将字符串中的数字提取出来然后求和
Apr 02 Python
浅谈Python中的生成器和迭代器
Jun 19 Python
Matplotlib 绘制饼图解决文字重叠的方法
Jul 24 Python
python基础之匿名函数详解
Apr 21 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发送post请求函数分享
2014/03/06 PHP
使用PHP和HTML5 FormData实现无刷新文件上传教程
2014/09/06 PHP
php实现根据url自动生成缩略图的方法
2014/09/23 PHP
PHP实现过滤各种HTML标签
2015/05/17 PHP
php中static 静态变量和普通变量的区别
2016/12/01 PHP
php使用parse_str实现查询字符串解析到变量中的方法
2017/02/17 PHP
thinkPHP5框架auth权限控制类与用法示例
2018/06/12 PHP
总结PHP代码规范、流程规范、git规范
2018/06/18 PHP
让回调函数 showResponse 也带上参数的代码
2007/08/13 Javascript
js 实现无干扰阴影效果 简单好用(附文件下载)
2009/12/27 Javascript
js/jquery去掉空格,回车,换行示例代码
2013/11/05 Javascript
js文件Cookie存取值示例代码
2014/02/20 Javascript
微信小程序数据存储与取值详解
2018/01/30 Javascript
详解vue 数组和对象渲染问题
2018/09/21 Javascript
JS实现“全选”和&quot;全不选&quot;功能代码实例
2020/02/06 Javascript
使用Element的InfiniteScroll 无限滚动组件报错的解决
2020/07/27 Javascript
原生JS实现相邻月份日历
2020/10/13 Javascript
深入理解Django的自定义过滤器
2017/10/17 Python
读取json格式为DataFrame(可转为.csv)的实例讲解
2018/06/05 Python
在pycharm中设置显示行数的方法
2019/01/16 Python
python银行系统实现源码
2019/10/25 Python
python3 动态模块导入与全局变量使用实例
2019/12/22 Python
将matplotlib绘图嵌入pyqt的方法示例
2020/01/08 Python
浅谈图像处理中掩膜(mask)的意义
2020/02/19 Python
Python实现弹球小游戏
2020/08/01 Python
实例教程 一款纯css3实现的数字统计游戏
2014/11/10 HTML / CSS
详解CSS3中border-image的使用
2015/07/18 HTML / CSS
CSS3制作炫酷的自定义发光文字
2016/03/28 HTML / CSS
Interflora澳大利亚:同日鲜花速递
2019/06/25 全球购物
运动会入场词60字
2014/02/15 职场文书
关于安全的演讲稿
2014/05/09 职场文书
七年级地理教学计划
2015/01/22 职场文书
2015年出纳工作总结与计划
2015/05/18 职场文书
消费者理赔投诉书
2015/07/02 职场文书
CSS实现漂亮的时钟动画效果的实例代码
2021/03/30 HTML / CSS
Redis三种集群模式详解
2021/10/05 Redis