Leetcode brushing record-155. Pila mínima

Inserte la descripción de la imagen aquí

La diferencia entre la pila mínima de esta pregunta y la pila convencional es que
necesita una función que pueda devolver el valor mínimo en tiempo constante.
Teniendo en cuenta que necesitamos poder devolver el valor mínimo en cualquier momento, necesitamos
calcular el valor mínimo del tiempo actual cada vez que ingresamos un elemento. Valor
Por lo tanto, necesitamos registrar un mínimo cada vez que presionamos.
Por lo tanto, es fácil pensar que la estructura de datos para registrar el valor mínimo es la misma que la longitud de la pila original.
Por lo tanto, prepare una lista para almacenar el valor mínimo al presionar.

class MinStack:

    def __init__(self):
        """
        initialize your data structure here.
        """
        self.realmin = None
        self.premin = None
        self.stack = []
        self.minstack = []
        self.stackdict = {}


    def push(self, x: int) -> None:
        self.stack.append(x)
        if self.minstack == []:
            self.minstack.append(x)
        elif self.minstack[-1] <= x:
            self.minstack.append(self.minstack[-1])
        else:
            self.minstack.append(x)



    def pop(self) -> None:
        self.minstack.pop(-1)
        return self.stack.pop(-1)#-1]#-1)
        #thisvalue = self.stack.pop()
        #self.stackdict[thisvalue] -= 1
        #if self.stackdict[thisvalue] == 0:
        #    del self.stackdict[thisvalue]


    def top(self) -> int:

        return self.stack[-1]


    def getMin(self) -> int:

        return self.minstack[-1]

Publicado 43 artículos originales · elogiado 14 · 20,000+ visitas

Supongo que te gusta

Origin blog.csdn.net/weixin_41545780/article/details/105463475
Recomendado
Clasificación