题目描述
用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。
Solution:
栈A作为入口,栈B作为出口。比如A,B,C,D进栈A,从栈A出的时候是D,C,B,A.再进栈B,出的时候就是A,B,C,D。那么就此实现了一个队列操作,也用了递归的思想。
PUSH方法比较容易,只需要在空串里追加元素即可。
POP方法则是要判断栈B是否为空,如不为空,则直接在栈B使用pop方法出栈。如不为空,而栈A为空,则需要将元素从栈A出栈再进入栈B。
CODE:
# -*- coding:utf-8 -*-
class Solution:
def __init__(self):
self.stackA = []
self.stackB = []
def push(self, node):
# write code here
self.stackA.append(node)
def pop(self):
# return xx
if self.stackB:
return self.stackB.pop()
while self.stackA:
self.stackB.append(self.stackA.pop())
if self.stackB:
return self.stackB.pop()