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中copy()方法的使用
May 21 Python
解决PyCharm同目录下导入模块会报错的问题
Oct 13 Python
python实现ip代理池功能示例
Jul 05 Python
Django项目后台不挂断运行的方法
Aug 31 Python
pymysql模块的使用(增删改查)详解
Sep 09 Python
Python SELENIUM上传文件或图片实现过程
Oct 28 Python
python3实现绘制二维点图
Dec 04 Python
python飞机大战 pygame游戏创建快速入门详解
Dec 17 Python
Python使用type动态创建类操作示例
Feb 29 Python
PyTorch在Windows环境搭建的方法步骤
May 12 Python
Django创建一个后台的基本步骤记录
Oct 02 Python
Python实现列表拼接和去重的三种方式
Jul 02 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教程 预定义变量
2009/10/23 PHP
基于pear auth实现登录验证
2010/02/26 PHP
解析dom中的children对象数组元素firstChild,lastChild的使用
2013/07/10 Javascript
js触发onchange事件的方法说明
2014/03/08 Javascript
jquery处理json数据实例分析
2014/06/03 Javascript
JS实现滑动菜单效果代码(包括Tab,选项卡,横向等效果)
2015/09/24 Javascript
第一章之初识Bootstrap
2016/04/25 Javascript
jQuery插件Validation快速完成表单验证的方式
2016/07/28 Javascript
整理一下常见的IE错误
2016/11/18 Javascript
通过源码分析Vue的双向数据绑定详解
2017/09/24 Javascript
react-navigation之动态修改title的内容
2018/09/26 Javascript
createObjectURL方法实现本地图片预览
2019/09/30 Javascript
[04:09]显微镜下的DOTA2第十二期—NaVi美如画的团战
2014/06/23 DOTA
Python中map和列表推导效率比较实例分析
2015/06/17 Python
用python写个自动SSH登录远程服务器的小工具(实例)
2017/06/17 Python
Python编写Windows Service服务程序
2018/01/04 Python
Flask-Mail用法实例分析
2018/07/21 Python
Django实现单用户登录的方法示例
2019/03/28 Python
python实现扫描局域网指定网段ip的方法
2019/04/16 Python
使用pygame写一个古诗词填空通关游戏
2019/12/03 Python
python:目标检测模型预测准确度计算方式(基于IoU)
2020/01/18 Python
python给视频添加背景音乐并改变音量的具体方法
2020/07/19 Python
python获取天气接口给指定微信好友发天气预报
2020/12/28 Python
Python字符串对齐、删除字符串不需要的内容以及格式化打印字符
2021/01/23 Python
纯html5+css3下拉导航菜单实现代码
2013/03/18 HTML / CSS
英国票务网站:Ticketmaster英国
2018/08/27 全球购物
来自世界各地的饮料:Flavourly
2019/05/06 全球购物
自动化工程专业个人应聘自荐信
2013/09/26 职场文书
大学本科毕业生的自我鉴定
2013/11/26 职场文书
2014年基层党组织公开承诺书
2014/03/29 职场文书
服务型党组织建设典型材料
2014/05/07 职场文书
教师党的群众路线教育实践活动学习心得体会
2014/10/30 职场文书
2015个人年度工作总结范文
2015/05/28 职场文书
党员转正党支部意见
2015/06/02 职场文书
曾国藩励志经典名言37句,蕴含哲理
2019/10/14 职场文书
详解如何使用Nginx解决跨域问题
2022/05/06 Servers