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 struct.unpack
Sep 06 Python
python调用Moxa PCOMM Lite通过串口Ymodem协议实现发送文件
Aug 15 Python
Python Tkinter简单布局实例教程
Sep 03 Python
浅析Python中signal包的使用
Nov 13 Python
Python实现读取文件最后n行的方法
Feb 23 Python
Python数据分析中Groupby用法之通过字典或Series进行分组的实例
Dec 08 Python
PyCharm代码提示忽略大小写设置方法
Oct 28 Python
Python常用特殊方法实例总结
Mar 22 Python
win10下安装Anaconda的教程(python环境+jupyter_notebook)
Oct 23 Python
Python实现AI换脸功能
Apr 10 Python
Django模型验证器介绍与源码分析
Sep 08 Python
使用Pytorch训练two-head网络的操作
May 28 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读写文件的方法(生成HTML)
2006/11/27 PHP
php xfocus防注入资料
2008/04/27 PHP
php 表单验证实现代码
2009/03/10 PHP
PHP 中 DOMDocument保存xml时中文出现乱码问题的解决方案
2016/09/19 PHP
Yii2下session跨域名共存的解决方案
2017/02/04 PHP
javascript字符串拼接的效率问题
2010/12/25 Javascript
JS 屏蔽键盘不可用与鼠标右键不可用的方法
2013/11/18 Javascript
javascript设计模式之工厂模式示例讲解
2014/03/04 Javascript
jQuery中die()方法用法实例
2015/01/19 Javascript
js超时调用setTimeout和间歇调用setInterval实例分析
2015/01/28 Javascript
jquery实现经典的淡入淡出选项卡效果代码
2015/09/22 Javascript
JQuery zClip插件实现复制页面内容到剪贴板
2015/11/02 Javascript
折叠菜单及选择器的运用
2017/02/03 Javascript
Bootstrap标签页(Tab)插件使用方法
2017/03/21 Javascript
详解小程序缓存插件(mrc)
2018/08/17 Javascript
js取0-9随机取4个数不重复的数字代码实例
2019/03/27 Javascript
微信小程序 Storage更新详解
2019/07/16 Javascript
vue项目使用.env文件配置全局环境变量的方法
2019/10/24 Javascript
JavaScript设计模型Iterator实例解析
2020/01/22 Javascript
Vue v-for中的 input 或 select的值发生改变时触发事件操作
2020/08/31 Javascript
python登录豆瓣并发帖的方法
2015/07/08 Python
独特的python循环语句
2016/11/20 Python
Python入门之三角函数tan()函数实例详解
2017/11/08 Python
浅谈python 里面的单下划线与双下划线的区别
2017/12/01 Python
Python实现京东秒杀功能代码
2019/05/16 Python
Python list与NumPy array 区分详解
2019/11/06 Python
np.random.seed() 的使用详解
2020/01/14 Python
django和flask哪个值得研究学习
2020/07/31 Python
python如何导出微信公众号文章方法详解
2020/08/31 Python
用CSS3的box-reflect来制作倒影效果
2016/11/15 HTML / CSS
美国大尺码女装零售商:TORRID
2016/10/01 全球购物
Sunglasses Shop英国:欧洲领先的太阳镜在线供应商之一
2018/09/19 全球购物
劳动模范事迹材料
2014/01/19 职场文书
自书遗嘱范文
2015/08/07 职场文书
女人创业励志语录,句句蕴含能量,激发你的潜能
2019/08/20 职场文书
Python中生成随机数据安全性、多功能性、用途和速度方面进行比较
2022/04/14 Python