两个栈实现队列
class Solution:
def __init__(self):
self.stack1 = []
self.stack2 = []
def push(self, node):
self.stack1.append(node)
def pop(self):
if self.stack2:
return self.stack2.pop()
else:
if self.stack1:
while self.stack1:
self.stack2.append(self.stack1.pop())
return self.stack2.pop()
else:
return None
思路
用两个栈A,B来实现队列的入队和出队操作。入队时元素入栈A,出队时如果栈B中存在元素则直接出栈,如果栈B为空同时栈A不为空则将栈A全部元素出栈后栈B入栈,再出栈一个元素,如果栈B和栈A同时为空则返回空
两个队列实现一个栈
入栈
将元素输入队列A
出栈
若队列A中元素个数为1,则直接出队;若队列A中元素个数大于1,将A中元素出队,直到只剩一个元素,出队的元素在队列B中依次入队,将A中元素出队。
class Solution:
def __init__(self):
self.queue1 = []
self.queue2 = []
def push(self, node):
self.queue1.append(node)
def pop(self):
if self.queue1:
if len(self.queue1) == 1:
return self.queue1.pop(0)
else:
while len(self.queue1) > 1:
self.queue2.append(self.queue1.pop(0))
self.queue1, self.queue2 = self.queue2, self.queue1
return self.queue2.pop(0)
else:
return None