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 Web开发模板引擎优缺点总结
May 06 Python
Python 类与元类的深度挖掘 I【经验】
May 06 Python
python下读取公私钥做加解密实例详解
Mar 29 Python
mac系统安装Python3初体验
Jan 02 Python
5款非常棒的Python工具
Jan 05 Python
十分钟利用Python制作属于你自己的个性logo
May 07 Python
python库lxml在linux和WIN系统下的安装
Jun 24 Python
解决python3读取Python2存储的pickle文件问题
Oct 25 Python
使用pytorch实现论文中的unet网络
Jun 24 Python
pycharm如何使用anaconda中的各种包(操作步骤)
Jul 31 Python
详解Django中views数据查询使用locals()函数进行优化
Aug 24 Python
python神经网络学习 使用Keras进行简单分类
May 04 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调用mysql数据 dbclass类
2011/05/07 PHP
PHP register_shutdown_function函数的深入解析
2013/06/03 PHP
本地计算机无法启动Apache故障处理
2014/08/08 PHP
php通过修改header强制图片下载的方法
2015/03/24 PHP
微信支付开发告警通知实例
2016/07/12 PHP
基于PHP实现微信小程序客服消息功能
2019/08/12 PHP
为jquery.ui.dialog 增加“自动记住关闭时的位置”的功能
2009/11/24 Javascript
调试Node.JS的辅助工具(NodeWatcher)
2012/01/04 Javascript
zTree插件之多选下拉菜单实例代码
2013/11/06 Javascript
深入理解Javascript动态方法调用与参数修改的问题
2013/12/10 Javascript
jquery对元素拖动排序示例
2014/01/16 Javascript
JavaScript设计模式之工厂方法模式介绍
2014/12/28 Javascript
浅析JS异步加载进度条
2016/05/05 Javascript
EasyUI为Numberbox添加blur事件的方法
2017/03/05 Javascript
JavaScript this绑定过程深入详解
2018/12/07 Javascript
使用vue-cli3新建一个项目并写好基本配置(推荐)
2019/04/24 Javascript
Vuex新手的理解与使用详解
2019/05/31 Javascript
原生js基于canvas实现一个简单的前端截图工具代码实例
2019/09/10 Javascript
微信小程序实现图片翻转效果的实例代码
2019/09/20 Javascript
超详细小程序定位地图模块全系列开发教学
2020/11/24 Javascript
Vue实现点击当前行变色
2020/12/14 Vue.js
python练习程序批量修改文件名
2014/01/16 Python
使用Python编写类UNIX系统的命令行工具的教程
2015/04/15 Python
Django中对数据查询结果进行排序的方法
2015/07/17 Python
Python探索之URL Dispatcher实例详解
2017/10/28 Python
python 实现一个反向单位矩阵示例
2019/11/29 Python
python 多线程共享全局变量的优劣
2020/09/24 Python
matplotlib 使用 plt.savefig() 输出图片去除旁边的空白区域
2021/01/05 Python
HTML5 解析规则分析
2009/08/14 HTML / CSS
来自圣地亚哥的实惠太阳镜:Knockaround
2018/08/27 全球购物
自我鉴定写作要点
2014/01/17 职场文书
20年同学聚会感言
2014/02/03 职场文书
岗位职责风险防控
2014/02/18 职场文书
大学生党员自我评价范文
2014/04/09 职场文书
2015年银行客户经理工作总结
2015/04/01 职场文书
python中pandas.read_csv()函数的深入讲解
2021/03/29 Python