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.x版本中新的字符串格式化方法
Apr 24 Python
Python类的用法实例浅析
May 27 Python
Python中asyncore异步模块的用法及实现httpclient的实例
Jun 28 Python
Python实现PS滤镜碎片特效功能示例
Jan 24 Python
Python3 XML 获取雅虎天气的实现方法
Feb 01 Python
Django admin.py 在修改/添加表单界面显示额外字段的方法
Aug 22 Python
Python3的socket使用方法详解
Feb 18 Python
python计算导数并绘图的实例
Feb 29 Python
python 通过文件夹导入包的操作
Jun 01 Python
python hmac模块验证客户端的合法性
Nov 07 Python
Python3中的tuple函数知识点讲解
Jan 03 Python
Python读取和写入Excel数据
Apr 20 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
浅析application/x-www-form-urlencoded和multipart/form-data的区别
2014/06/22 PHP
php使用PDO方法详解
2014/12/27 PHP
php数字每三位加逗号的功能函数
2015/10/22 PHP
PHP会话操作之cookie用法分析
2016/09/28 PHP
php 解析xml 的四种方法详细介绍
2016/10/26 PHP
PHP删除二维数组中相同元素及数组重复值的方法示例
2017/05/05 PHP
PHP实现防盗链的方法分析
2017/07/25 PHP
laravel 实现向公共模板中传值 (view composer)
2019/10/22 PHP
javascript Demo模态窗口
2009/12/06 Javascript
jQuery boxy弹出层插件中文演示及使用讲解
2011/02/24 Javascript
详解如何使用webpack在vue项目中写jsx语法
2017/11/08 Javascript
关于Mac下安装nodejs、npm和cnpm的教程
2018/04/11 NodeJs
详解Node使用Puppeteer完成一次复杂的爬虫
2018/04/18 Javascript
vue中promise的使用及异步请求数据的方法
2018/11/08 Javascript
微信小程序实现日历签到
2020/09/21 Javascript
Pythont特殊语法filter,map,reduce,apply使用方法
2016/02/27 Python
深入浅析python定时杀进程
2016/06/06 Python
Python中的异常处理相关语句基础学习笔记
2016/07/11 Python
Python语言实现百度语音识别API的使用实例
2017/12/13 Python
Python实现将doc转化pdf格式文档的方法
2018/01/19 Python
Python面向对象之反射/自省机制实例分析
2018/08/24 Python
python使用wxpy实现微信消息防撤回脚本
2019/04/29 Python
Python从函数参数类型引出元组实例分析
2019/05/28 Python
pandas按行按列遍历Dataframe的几种方式
2019/10/23 Python
python GUI库图形界面开发之PyQt5布局控件QVBoxLayout详细使用方法与实例
2020/03/06 Python
html+css3实现的登录界面
2020/12/09 HTML / CSS
澳大利亚百货公司:David Jones
2018/02/08 全球购物
英国性能汽车零件和发动机配件在线:Maxpeedingrods
2019/11/05 全球购物
extern在函数声明中是什么意思
2014/01/19 面试题
什么是命名空间(NameSpace)
2015/11/24 面试题
《颐和园》教学反思
2014/02/26 职场文书
地球一小时倡议书
2014/04/15 职场文书
如何写求职信
2014/05/24 职场文书
国土资源局开展党的群众路线教育实践活动整改措施
2014/09/26 职场文书
工作失职造成投诉的检讨书范文
2014/10/05 职场文书
学历证明范文
2015/06/16 职场文书