Python实现包含min函数的栈

 更新时间:2016年04月29日 11:55:18   作者:阿涵-_-  
这篇文章主要介绍了Python实现包含min函数的栈,可实现栈中元素的计算及进栈出栈等操作,需要的朋友可以参考下

本文实例讲述了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程序设计有所帮助。

相关文章

  • OpenCV实现图像平滑处理的方法汇总

    OpenCV实现图像平滑处理的方法汇总

    这篇文章为大家详细介绍了在图像上面进行了图像均值滤波、方框滤波 、高斯滤波、中值滤波、双边滤波、2D卷积等具体操作的方法,需要的可以参考一下
    2023-02-02
  • python实现根据窗口标题调用窗口的方法

    python实现根据窗口标题调用窗口的方法

    这篇文章主要介绍了python实现根据窗口标题调用窗口的方法,涉及Python操作窗口的技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-03-03
  • python的链表基础知识点

    python的链表基础知识点

    在本篇文章里小编给大家整理的是一篇关于python的链表基础知识点内容,有兴趣的朋友们可以参考学习下。
    2020-09-09
  • Python运维之获取系统CPU信息的实现方法

    Python运维之获取系统CPU信息的实现方法

    今天小编就为大家分享一篇Python运维之获取系统CPU信息的实现方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-06-06
  • openCV入门学习基础教程第三篇

    openCV入门学习基础教程第三篇

    pencv是用于快速处理图像处理、计算机视觉问题的工具,支持多种语言进行开发如c++、python、java等,下面这篇文章主要给大家介绍了关于openCV入门学习基础教程的相关资料,需要的朋友可以参考下
    2022-11-11
  • Python中利用pyqt5制作指针钟表显示实时时间(指针时钟)

    Python中利用pyqt5制作指针钟表显示实时时间(指针时钟)

    这篇文章主要介绍了Python中利用pyqt5制作指针钟表显示实时时间(动态指针时钟),本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-02-02
  • Python ftp上传文件

    Python ftp上传文件

    这篇文章主要介绍了Python ftp上传文件的相关资料,需要的朋友可以参考下
    2016-02-02
  • PyTorch使用Tricks:Dropout,R-Dropout和Multi-Sample Dropout方式

    PyTorch使用Tricks:Dropout,R-Dropout和Multi-Sample Dropout方式

    这篇文章主要介绍了PyTorch使用Tricks:Dropout,R-Dropout和Multi-Sample Dropout方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-02-02
  • Django 聚合函数的具体使用

    Django 聚合函数的具体使用

    orm模型中的聚合函数跟MySQL中的聚合函数作用是一致的,也有像Sum、Avg、Count、Max、Min,接下来我们逐个介绍,下面就一起来了解一下
    2021-05-05
  • 实例解析Python设计模式编程之桥接模式的运用

    实例解析Python设计模式编程之桥接模式的运用

    这篇文章主要介绍了Python设计模式编程之桥接模式的运用,桥接模式主张把抽象部分与它的实现部分分离,需要的朋友可以参考下
    2016-03-03

最新评论