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脚本在Nginx和uwsgi上部署MoinMoin的教程
May 05 Python
Python中在for循环中嵌套使用if和else语句的技巧
Jun 20 Python
Python队列的定义与使用方法示例
Jun 24 Python
python装饰器实例大详解
Oct 25 Python
浅述python中深浅拷贝原理
Sep 18 Python
python代理工具mitmproxy使用指南
Jul 04 Python
python3 Scrapy爬虫框架ip代理配置的方法
Jan 17 Python
python实现密码强度校验
Mar 18 Python
Python面向对象程序设计之静态方法、类方法、属性方法原理与用法分析
Mar 23 Python
django迁移文件migrations的实现
Mar 31 Python
python 使用多线程创建一个Buffer缓存器的实现思路
Jul 02 Python
pytorch查看网络参数显存占用量等操作
May 12 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
实现“上一页”和“下一页按钮
2006/10/09 PHP
Javascript操纵Cookie实现购物车程序
2007/02/15 Javascript
textarea的value是html文件源代码,存成html文件的代码
2007/04/20 Javascript
基于jquery的动态创建表格的插件
2011/04/05 Javascript
jQuery控制输入框只能输入数值的小例子
2013/03/20 Javascript
js中符号转意问题示例探讨
2013/08/19 Javascript
在JS中解析HTML字符串示例代码
2014/04/16 Javascript
详解JavaScript中的every()方法
2015/06/08 Javascript
浅谈js中test()函数在正则中的使用
2016/08/19 Javascript
angular十大常见问题
2017/03/07 Javascript
浅析JS中什么是自定义react数据验证组件
2018/10/19 Javascript
使用JS实现动态时钟
2020/03/12 Javascript
[02:41]DOTA2亚洲邀请赛小组赛第三日 赛事回顾
2015/02/01 DOTA
速记Python布尔值
2017/11/09 Python
Python动刷新抢12306火车票的代码(附源码)
2018/01/24 Python
python表格存取的方法
2018/03/07 Python
用pandas按列合并两个文件的实例
2018/04/12 Python
用TensorFlow实现lasso回归和岭回归算法的示例
2018/05/02 Python
浅谈Python 递归算法指归
2019/08/22 Python
Kears 使用:通过回调函数保存最佳准确率下的模型操作
2020/06/17 Python
详解Pymongo常用查询方法总结
2021/01/29 Python
python定义具名元组实例操作
2021/02/28 Python
canvas画布实现手写签名效果的示例代码
2019/04/23 HTML / CSS
HTML5 Video标签的属性、方法和事件汇总介绍
2015/04/24 HTML / CSS
英国排名第一的最新设计师品牌手表独立零售商:TIC Watches
2016/09/24 全球购物
意大利高端时尚买手店:Stefania Mode
2018/03/01 全球购物
墨尔本复古时尚品牌:Dangerfield
2018/12/12 全球购物
J2EE是技术还是平台还是框架
2016/08/14 面试题
团结演讲稿范文
2014/05/23 职场文书
学生评语集锦
2015/01/04 职场文书
中学生清明节演讲稿
2015/03/18 职场文书
工会文体活动总结
2015/05/07 职场文书
2015年初一班主任工作总结
2015/05/13 职场文书
学术会议开幕词
2016/03/03 职场文书
如何利用opencv判断两张图片是否相同详解
2021/07/07 Python
Apache Pulsar结合Hudi构建Lakehouse方案分析
2022/03/31 Servers