大致思路:stack01、stack02分别模拟队列输入、输出,stack02还有数的话,就直接pop;stack02为空的话再看stack01是否有数,有则倾倒进stack01中,保证顺序,像下面这样
5、4、2、3 stack02栈底:::stack01栈底 5、4、2、3
时间复杂度:O(1),空间复杂度O(N)
class CQueue:
def __init__(self):
self.stack01 = [] #入
self.stack02 = [] #出
def appendTail(self, value: int) -> None:
self.stack01.append(value)
def deleteHead(self) -> int:
if self.stack02 == []:
while self.stack01 != []:
self.stack02.append(self.stack01.pop())
if self.stack02 != []:
return self.stack02.pop()
else:
return -1
# Your CQueue object will be instantiated and called as such:
# obj = CQueue()
# obj.appendTail(value)
# param_2 = obj.deleteHead()