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多线程(python多线程简明教程)
Jun 09 Python
跟老齐学Python之dict()的操作方法
Sep 24 Python
python继承和抽象类的实现方法
Jan 14 Python
Python的Bottle框架中获取制定cookie的教程
Apr 24 Python
python中WSGI是什么,Python应用WSGI详解
Nov 24 Python
python 列表,数组和矩阵sum的用法及区别介绍
Jun 28 Python
python实现简单日期工具类
Apr 24 Python
python向字符串中添加元素的实例方法
Jun 28 Python
python安装本地whl的实例步骤
Oct 12 Python
python双端队列原理、实现与使用方法分析
Nov 27 Python
Python定义函数时参数有默认值问题解决
Dec 19 Python
opencv 阈值分割的具体使用
Jul 08 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
可快速识别放射性物质-国外大神教你diy一个开放式辐射探测器
2020/03/12 无线电
咖啡店都有些什么常规豆子呢?有什么风味在里面
2021/03/04 咖啡文化
PHP程序员编程注意事项
2008/04/10 PHP
PHP版单点登陆实现方案的实例
2016/11/17 PHP
php处理多图上传压缩代码功能
2018/06/13 PHP
php从数据库中获取数据用ajax传送到前台的方法
2018/08/20 PHP
php+js实现点赞功能的示例详解
2020/08/07 PHP
jquery ajax方式直接提交整个表单核心代码
2013/08/15 Javascript
JS函数重载的解决方案
2014/05/13 Javascript
jQuery判断元素上是否绑定了指定事件的方法
2015/03/17 Javascript
js实现仿MSN带关闭功能的右下角弹窗代码
2015/09/04 Javascript
详解JavaScript表单验证(E-mail 验证)
2016/03/31 Javascript
解决bootstrap导航栏navbar在IE8上存在缺陷的方法
2016/07/01 Javascript
js学使用setTimeout实现轮循动画
2017/07/17 Javascript
Vue代码分割懒加载的实现方法
2017/11/23 Javascript
vue 中filter的多种用法
2018/04/26 Javascript
精读《Vue3.0 Function API》
2020/05/20 Javascript
[02:05]DOTA2完美大师赛趣味视频之看我表演
2017/11/18 DOTA
Python中自定义函数的教程
2015/04/27 Python
python+tkinter实现学生管理系统
2019/08/20 Python
python自动分箱,计算woe,iv的实例代码
2019/11/22 Python
Python插件机制实现详解
2020/05/04 Python
Python3以GitHub为例来实现模拟登录和爬取的实例讲解
2020/07/30 Python
Python安装Bs4的多种方法
2020/11/28 Python
python获取天气接口给指定微信好友发天气预报
2020/12/28 Python
专科毕业生就业推荐信
2013/11/01 职场文书
数据员岗位职责
2013/11/19 职场文书
销售部主管岗位职责
2013/12/18 职场文书
学习经验交流会主持词
2014/04/01 职场文书
旅游与环境专业求职信
2014/06/05 职场文书
党员查摆四风问题思想汇报
2014/10/25 职场文书
高一军训口号
2015/12/25 职场文书
如何用python识别滑块验证码中的缺口
2021/04/01 Python
Python 多线程之threading 模块的使用
2021/04/14 Python
解决Python中的modf()函数取小数部分不准确问题
2021/05/28 Python
一次SQL如何查重及去重的实战记录
2022/03/13 MySQL