question:
1.两个栈实现一个队列:
class CQueue:
def __init__(self):
self.q1 = []
self.q2 = []
def appendTail(self, value: int) -> None:
return self.q1.append(value) #把值放到栈中
def deleteHead(self) -> int:
if self.q2: #如果栈2中不为空,则把里面的元素删除
return self.q2.pop()
elif not self.q1: #如果栈1没有值,则返回-1
return -1
else: #如果栈2为空,同时栈1有值的情况下
while self.q1:
self.q2.append(self.q1.pop()) #将栈1依次弹出的值放入栈2中
return self.q2.pop() #返回栈2弹出的值
2.两个队列实现一个栈
class CQueue:
def __init__(self):
self.q1 = []
self.q2 = []
def appendTail(self, value: int) -> None:
return self.q1.append(value) #把值放到栈中
def deleteHead(self) -> int:
if len(self.q1) ==0:
return -1
else:
while len(self.q1) != 1:
self.q2.append(self.q1.pop(0))
self.q1,self.q2 = self.q2,self.q1 #交换是为了下次pop的弹出
return self.q2.pop()