LeetCodeEasy- [Pregunta de la entrevista 09. Implementación de cola con dos pilas]

Implemente una cola con dos pilas. La declaración de la cola es la siguiente: implemente sus dos funciones appendTail y deleteHead para completar las funciones de insertar enteros al final de la cola y eliminar enteros en la cabecera de la cola. (Si no hay elementos en la cola, la operación deleteHead devuelve -1)

Ejemplo 1:

输入 :
["CQueue", "appendTail", "deleteHead", "deleteHead"]
[[], [3], [], []]
输出 : [nulo, nulo, 3, -1]


Ejemplo 2

输入 :
["CQueue", "deleteHead", "appendTail", "appendTail", "deleteHead", "deleteHead"]
[[], [], [5], [2], [], []]
输出 :: [nulo, -1, nulo, nulo, 5,2]


Consejos:

1 <= valores <= 10000 se realizarán
hasta 10000 llamadas para agregar Tail y deleteHead

Fuente: enlace LeetCode (LeetCode)
: https://leetcode-cn.com/problems/yong-liang-ge-zhan-shi-xian-dui-lie-lcof los
derechos de autor pertenecen a la red de deducción. Comuníquese con la autorización oficial para la reimpresión comercial e indique la fuente de la reimpresión no comercial.

Idea 1: Dos pilas: pila de datos + pila auxiliar

Debería ser que el orden de la pila y la cola es exactamente el opuesto, entonces las dos pilas son iguales (invertidas dos veces).

class CQueue:

    def __init__(self):
        self.stack1 = [] # 存数
        self.stack2 = [] # 

    def appendTail(self, value: int) -> None:
        while self.stack1 != []:
            self.stack2.append(self.stack1.pop())
        self.stack2.append(value)
        while self.stack2 != []:
            self.stack1.append(self.stack2.pop())
        return None
    def deleteHead(self) -> int:
        if self.stack1 == []:
            return -1
        else:
            return self.stack1.pop()


# Your CQueue object will be instantiated and called as such:
# obj = CQueue()
# obj.appendTail(value)
# param_2 = obj.deleteHead()

Idea 2: Dos pilas: pila de datos + pila auxiliar (mejorada)

class CQueue:

    def __init__(self):
        self.stack_in = [] 
        self.stack_out = []

    def appendTail(self, value: int) -> None:
        self.stack_in.append(value)

    def deleteHead(self) -> int:
        if not self.stack_out:
            if not self.stack_in:
                return -1
            while self.stack_in:
                self.stack_out.append(self.stack_in.pop())
        return self.stack_out.pop()

 

Publicado 314 artículos originales · 22 alabanzas · Más de 20,000 visitas

Supongo que te gusta

Origin blog.csdn.net/qq_39451578/article/details/105341871
Recomendado
Clasificación