题目描述

用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。

解题思路

栈先进后出,队列先进先出,我们用instack来进行push操作,用outstack来进行pop操作。一个元素进入instack栈后,出栈的顺序被翻转,再次进入outstack栈后,出栈顺序再次被反转,因此出栈顺序与入栈顺序相同,也就是队列的先进先出。

  1. class Solution:
  2. def __init__(self):
  3. self.instack=[]
  4. self.outstack=[]
  5. def push(self,node):
  6. #用instack进行push操作
  7. self.instack.append(node)# write code here
  8. def pop(self):
  9. # return xx
  10. #若outstack为空,先将instack出栈的元素入outstack栈,
  11. if self.outstack==[]:
  12. while self.instack:
  13. self.outstack.append(self.instack.pop())
  14. return self.outstack.pop()