剑指offer 第20题 包含min函数的栈

描述:

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

思路:

两个栈,一个存所有元素,一个存当前的最小元素

代码:

class Solution:
    def __init__(self):
        self.stack = []
        self.stack_min = []
        self.min_value = float('inf')
    def push(self, node):
        # write code here
        self.stack.append(node)
        if node < self.min_value:
            self.min_value = node
            self.stack_min.append(node)
        else:
            self.stack_min.append(self.min_value)
    def pop(self):
        # write code here
        self.stack_min.pop()
        if self.stack_min:
            self.min_value = self.stack_min[-1]
        else:
            self.min_value = float('float')
        return self.stack.pop()
    def top(self):
        # write code here
        return self.stack[-1]
    def min(self):
        # write code here
        return self.stack_min[-1]

结果:

运行时间:28ms

占用内存:5724k

猜你喜欢

转载自blog.csdn.net/qq_38650545/article/details/86240011