题解 | #用两个栈实现队列# -- [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()