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()