题解 | #用两个栈实现队列# -- [Python3]
用两个栈实现队列
http://www.nowcoder.com/practice/54275ddae22f475981afa2244dd448c6
原理
- 栈1 用来存储 输入Push 的 元素
- 栈2 用来存储 反转(因为队列的特性为先进先出,而栈为先进后出,所以需要反转)后的元素,以便Pop
- 当栈2 为空时,则需要从栈1中copy反转过后的元素,再进行pop操作
class Solution:
def __init__(self):
self.stack1 = []
self.stack2 = []
def push(self, node):
self.stack1.append(node)
def pop(self):
if not self.stack2:
# 反转 栈1 以便复制到 栈2中
self.stack1.reverse()
# 复制到 栈2 中
self.stack2 = self.stack1.copy()
# 因为已经复制过, 清空栈1
self.stack1.clear()
return self.stack2.pop()