用两个栈实现队列
题目分析
两个栈,一个负责进 (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()
京公网安备 11010502036488号