preguntas de la entrevista cola con dos pilas 09

Una cola se implementa con dos pilas. La siguiente cola de declaración, implementar sus dos funciones appendTail y deleteHead, se completaron en el extremo de la inserción de cola y número entero número entero de eliminación en la cabeza de la función de cola. (Si no hay ningún elemento de la cola, deleteHead operación vuelve -1)

Ejemplo 1:

Entrada:
[ "CQueue", "appendTail", "deleteHead", "deleteHead"]
[[], [3], [], [].]
De salida: [null, null, 3, -1]
Ejemplo 2:

输入:
[ "CQueue", "deleteHead", "appendTail", "appendTail", "deleteHead", "deleteHead"]
[[], [], [5], [2], [], []]
输出: [null, -1, null, null, 5,2]
提示:

1 <= valores <= 10.000
serán más appendTail, deleteHead eran 10.000 llamadas

Fuente: Botón de estancia (LeetCode)
enlace: https: //leetcode-cn.com/problems/yong-liang-ge-zhan-shi-xian-dui-lie-lcof
 

Solución: el establecimiento de dos pilas, elementos agrega desde una cola, se completa un elemento inverso.
Un primer elemento aditivo directamente append
una segunda pila se divide en tres casos
1. Si los elementos presentes STACK2 de STACK2 ser devueltos directamente estallar el elemento superior
2. Si STACK1 no hay elementos devuelve -1
3. Si la presencia de STACK1 elemental , a continuación, STACK1 los elementos colocados después STACK2 en la pila, a continuación, pop elemento STACK2 es el primer elemento de la cola

class CQueue(object):

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

    def appendTail(self, value):
        """
        :type value: int
        :rtype: None
        """
        self.stack1.append(value)

    def deleteHead(self):
        """
        :rtype: int
        """
        if self.stack2:
            return self.stack2.pop()
        if not self.stack1:     #不能用 self.stat1 is None判断为空
            return -1
        while self.stack1:
            self.stack2.append(self.stack1.pop())
        return self.stack2.pop()

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

 

Publicados 395 artículos originales · ganado elogios 126 · Vistas de 200.000 +

Supongo que te gusta

Origin blog.csdn.net/memory_qianxiao/article/details/104931422
Recomendado
Clasificación