美文网首页
包含min函数的栈(Python)

包含min函数的栈(Python)

作者: Jiafu | 来源:发表于2017-09-29 14:25 被阅读0次
# 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()

相关文章

  • 包含min函数的栈(Python)

  • 【栈】包含min函数的栈

  • 【34】包含min函数的stack

    【34】包含min函数的stack 题目: 实现一个包含min函数的栈,min和push,pop都是o(1)时间 ...

  • 包含min函数的栈

    定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。

  • 包含 min 函数的栈

    题目要求:定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数。在该栈中,调用 min、pu...

  • 包含Min函数的栈

    时间 2018/10/14?环境:牛客的编译环境?语言:JavaScript☕️难点:这道题的难点在于不能直接用一...

  • 包含min函数的栈

    题目描述 定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。 ...

  • 包含min函数的栈

    定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。 首先我们可...

  • 包含min函数的栈

    题目描述定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。

  • 包含min函数的栈

    LeetCode 155. Min Stack设计一个栈,支持如下操作,这些操作的算法复杂度需要是常数级,O(1)...

网友评论

      本文标题:包含min函数的栈(Python)

      本文链接:https://www.haomeiwen.com/subject/mbeiextx.html