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遍历指定文件及文件夹的方法
May 09 Python
Python开发如何在ubuntu 15.10 上配置vim
Jan 25 Python
python使用标准库根据进程名如何获取进程的pid详解
Oct 31 Python
基于python log取对数详解
Jun 08 Python
对python多线程SSH登录并发脚本详解
Feb 14 Python
详解爬虫被封的问题
Apr 23 Python
python的pstuil模块使用方法总结
Jul 26 Python
使用python远程操作linux过程解析
Dec 04 Python
简单了解Django ORM常用字段类型及参数配置
Jan 07 Python
Python hashlib常见摘要算法详解
Jan 13 Python
Tensorflow限制CPU个数实例
Feb 06 Python
Python使用socket_TCP实现小文件下载功能
Oct 09 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 $_SERVER相关参数判断是否支持Rewrite模块
2013/09/26 PHP
php中sql注入漏洞示例 sql注入漏洞修复
2014/01/24 PHP
Codeigniter(CI)框架分页函数及相关知识
2014/11/03 PHP
Laravel框架实现的批量删除功能示例
2019/01/16 PHP
脚本之家贴图转换+转贴工具用到的js代码超级推荐
2007/04/05 Javascript
Javascript 类与静态类的实现(续)
2010/04/02 Javascript
jquery 简短几句代码实现给元素动态添加及获取提示信息
2011/09/01 Javascript
为JS扩展Array.prototype.indexOf引发的问题探讨及解决
2013/04/24 Javascript
js设置cookie过期当前时间减去一秒相当于立即过期
2014/09/04 Javascript
轻松创建nodejs服务器(7):阻塞操作的实现
2014/12/18 NodeJs
url中的特殊符号有什么含义(推荐)
2016/06/17 Javascript
jQuery autoComplete插件两种使用方式及动态改变参数值的方法详解
2016/10/24 Javascript
javascript构造函数以及原型对象的理解
2017/01/13 Javascript
Angular实现点击按钮控制隐藏和显示功能示例
2017/12/29 Javascript
vue axios 给生产环境和发布环境配置不同的接口地址(推荐)
2018/05/08 Javascript
vue插件开发之使用pdf.js实现手机端在线预览pdf文档的方法
2018/07/12 Javascript
Vue-cli3简单使用(图文步骤)
2019/04/30 Javascript
mock.js模拟数据实现前后端分离
2019/07/24 Javascript
让IDE识别webpack的别名alias的实现方法
2020/05/06 Javascript
2分钟实现一个Vue实时直播系统的示例代码
2020/06/05 Javascript
TypeScript 引用资源文件后提示找不到的异常处理技巧
2020/07/15 Javascript
js前端对于大量数据的展示方式及处理方法
2020/12/02 Javascript
python实现DNS正向查询、反向查询的例子
2014/04/25 Python
tensorflow中next_batch的具体使用
2018/02/02 Python
Python 循环语句之 while,for语句详解
2018/04/23 Python
PyCharm搭建Spark开发环境实现第一个pyspark程序
2019/06/13 Python
python3实现mysql导出excel的方法
2019/07/31 Python
python使用sklearn实现决策树的方法示例
2019/09/12 Python
CSS3美化表单控件全集
2016/06/29 HTML / CSS
西班牙床垫网上商店:Colchones.es
2018/05/06 全球购物
shell程序中如何注释
2012/02/17 面试题
女儿十岁生日答谢词
2014/01/27 职场文书
五年级音乐教学反思
2014/02/06 职场文书
2014年道德讲堂实施方案
2014/03/05 职场文书
《我们的民族小学》教学反思
2016/02/19 职场文书
Ruby处理CSV数据方法详解
2022/04/18 Ruby