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生成随机密码
Mar 10 Python
详解Django缓存处理中Vary头部的使用
Jul 24 Python
Python中字典和集合学习小结
Jul 07 Python
每天迁移MySQL历史数据到历史库Python脚本
Apr 13 Python
python实现换位加密算法的示例
Oct 14 Python
python制作抖音代码舞
Apr 07 Python
24式加速你的Python(小结)
Jun 13 Python
Python单元测试工具doctest和unittest使用解析
Sep 02 Python
python3 实现函数写文件路径的正确方法
Nov 27 Python
使用python 计算百分位数实现数据分箱代码
Mar 03 Python
Django import export实现数据库导入导出方式
Apr 03 Python
Python之matplotlib绘制饼图
Apr 13 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使用两个栈实现队列功能的方法
2018/01/15 PHP
php 删除一维数组中某一个值元素的操作方法
2018/02/01 PHP
Yii框架中使用PHPExcel的方法分析
2019/07/25 PHP
PHP 模拟登陆功能实例详解
2019/09/10 PHP
PHP实现新型冠状病毒疫情实时图的实例
2020/02/04 PHP
javaScript(JS)替换节点实现思路介绍
2013/04/17 Javascript
jQuery中dequeue()方法用法实例
2014/12/29 Javascript
JavaScript 表单处理实现代码
2015/04/13 Javascript
jQuery事件绑定与解除绑定实现方法
2015/04/15 Javascript
JS实现的新浪微博大厅文字内容滚动效果代码
2015/11/05 Javascript
js判断某个字符出现的次数的简单实例
2016/06/03 Javascript
简单了解JavaScript操作XPath的一些基本方法
2016/06/03 Javascript
基于javascript实现按圆形排列DIV元素(二)
2016/12/02 Javascript
在vue.js中使用JSZip实现在前端解压文件的方法
2018/09/05 Javascript
详解为生产环境编译Angular2应用的方法
2018/12/10 Javascript
webpack4 SplitChunks实现代码分隔详解
2019/05/23 Javascript
详解微信小程序(Taro)手动埋点和自动埋点的实现
2021/03/02 Javascript
windows下Python实现将pdf文件转化为png格式图片的方法
2017/07/21 Python
Python unittest 自动识别并执行测试用例方式
2020/03/09 Python
python库skimage给灰度图像染色的方法示例
2020/04/27 Python
Django之富文本(获取内容,设置内容方式)
2020/05/21 Python
Python爬虫如何应对Cloudflare邮箱加密
2020/06/24 Python
Python中Selenium模块的使用详解
2020/10/09 Python
python数据抓取3种方法总结
2021/02/07 Python
利用HTML5的新特点实现图片文件异步上传
2014/05/29 HTML / CSS
Pretty Little Thing爱尔兰:时尚女性服饰
2017/03/27 全球购物
澳大利亚最好的在线时尚精品店:Princess Polly
2018/01/03 全球购物
美国领先的机场停车聚合商:Airport Parking Reservations
2020/02/28 全球购物
招商专员岗位职责
2014/02/08 职场文书
关于护士节的演讲稿
2014/05/26 职场文书
工作证明格式及范本
2014/09/12 职场文书
综合素质自我评价评语
2015/03/06 职场文书
建党伟业的观后感
2015/06/01 职场文书
适合毕业生创业的项目怎么找?
2019/08/08 职场文书
JavaScript原型链详解
2021/11/07 Javascript
MySQL创建管理KEY分区
2022/04/13 MySQL