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打开网页和暂停实例
Sep 30 Python
Python 列表list使用介绍
Nov 30 Python
python人民币小写转大写辅助工具
Jun 20 Python
python输出100以内的质数与合数实例代码
Jul 08 Python
面向初学者的Python编辑器Mu
Oct 08 Python
python3的输入方式及多组输入方法
Oct 17 Python
python判断单向链表是否包括环,若包含则计算环入口的节点实例分析
Oct 23 Python
python实现简单银行管理系统
Oct 25 Python
python函数定义和调用过程详解
Feb 09 Python
jupyternotebook 撤销删除的操作方式
Apr 17 Python
Python将二维列表list的数据输出(TXT,Excel)
Apr 23 Python
Python中的xlrd模块使用整理
Jun 15 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解压文件代码实现php在线解压
2014/02/13 PHP
php+highchats生成动态统计图
2014/05/21 PHP
PHP生成随机字符串(3种方法)
2015/09/25 PHP
学习thinkphp5.0验证类使用方法
2017/11/16 PHP
Laravel实现ApiToken认证请求
2019/10/14 PHP
jquery实现盒子下拉效果示例代码
2013/09/12 Javascript
用javascript替换URL中的参数值示例代码
2014/01/27 Javascript
采用call方式实现js继承
2014/05/20 Javascript
《JavaScript函数式编程》读后感
2015/08/07 Javascript
jQuery获取及设置表单input各种类型值的方法小结
2016/05/24 Javascript
DIV+CSS+jQ实现省市联动可扩展
2016/06/22 Javascript
jQuery通过ajax方法获取json数据不执行success的原因及解决方法
2016/10/15 Javascript
微信小程序 PHP后端form表单提交实例详解
2017/01/12 Javascript
关于jQuery中fade(),show()起始位置的一点小发现
2017/04/25 jQuery
jquery easyui如何实现格式化列
2017/07/30 jQuery
对vue中v-if的常见使用方法详解
2018/09/28 Javascript
vue-i18n结合Element-ui的配置方法
2019/05/20 Javascript
vue实现桌面向网页拖动文件的示例代码(可显示图片/音频/视频)
2021/03/01 Vue.js
[59:32]Liquid vs Fnatic 2019国际邀请赛淘汰赛败者组BO1 8.20.mp4
2020/07/19 DOTA
python 动态获取当前运行的类名和函数名的方法
2014/04/15 Python
python协程用法实例分析
2015/06/04 Python
python使用matplotlib画柱状图、散点图
2019/03/18 Python
python3实现表白神器
2019/04/09 Python
详解Python 字符串相似性的几种度量方法
2019/08/29 Python
Python Pygame实现俄罗斯方块
2021/02/19 Python
利用css3 translate完美实现表头固定效果
2017/02/28 HTML / CSS
button在IE6/7下的黑边去除方案
2012/12/24 HTML / CSS
《望庐山瀑布》教学反思
2014/04/22 职场文书
我的小天地教学反思
2014/04/30 职场文书
语文教研活动总结
2014/07/02 职场文书
篮球兴趣小组活动总结
2014/07/07 职场文书
党员干部观看《周恩来四个昼夜》思想汇报
2014/09/10 职场文书
学生保证书
2015/01/16 职场文书
老公保证书
2015/01/17 职场文书
2015初中教导处工作总结
2015/07/21 职场文书
Python中X[:,0]和X[:,1]的用法
2021/05/10 Python