栈 问题

2020-05-13  本文已影响0人  RayRaymond

155. 最小栈

常数时间内检索最小元素

使用一个辅助栈,与元素栈同步插入与删除,用于存储与每个元素对应的最小值。【示意图】

时间复杂度 O(1) 空间复杂度 O(n)

class MinStack:

    def __init__(self):
        """
        initialize your data structure here.
        """
        self.stack = []
        self.minval_stack = []

    def push(self, x: int) -> None:
        self.stack.append(x)
        if not self.minval_stack or x <= self.minval_stack[-1]:
            self.minval_stack.append(x)

    def pop(self) -> None:
        tmp = self.stack.pop()
        if tmp == self.minval_stack[-1]:
            return self.minval_stack.pop()
        else:
            return tmp


    def top(self) -> int:
        return self.stack[-1]

    def getMin(self) -> int:
        return self.minval_stack[-1]
上一篇 下一篇

猜你喜欢

热点阅读