用两个栈实现队列
题目分析
两个栈,一个负责进 (in),一个负责出(out):
class Solution: def __init__(self): self.__in, self.__out = [], []
- 进栈逻辑
直接 append 即可
- 出栈逻辑
- out 栈不是空的情况: 直接 pop() 即可
- out 栈为空, in 栈不为空,则从 in 从后向前把数据拷贝到 out ,然后 pop() 即可
代码实现
# -*- coding:utf-8 -*- class Solution: def __init__(self): self.__in, self.__out = [], [] def push(self, node): # in 栈接收新数据 self.__in.append(node) def pop(self): # out 为空, 从 in 拷贝数据 # in[last] -> out[first] ...... if len(self.__out) <= 0: in_length = len(self.__in) while in_length > 0: self.__out.append(self.__in[in_length -1]) in_length -= 1 # 把 in 置空 self.__in = [] return self.__out.pop()