题解 | #用两个栈实现队列#
用两个栈实现队列
http://www.nowcoder.com/practice/54275ddae22f475981afa2244dd448c6
注意相应的数据结构的想法和思路
栈和队列自带push()和pop操作
核心思想为:将另一个栈中的出栈元素,按照先后循序压入其中的一个栈中,然后这个栈pop出,送入另一个栈中,这样就实现了先后出栈顺序的颠倒,最后第二个栈压出元素即可实现队列的先进先出操作
# -*- coding:utf-8 -*-
class Solution:
def __init__(self):
self.stack1 = []
self.stack2 = []
# 需要掌握的方法为,直接将相关的队列1中的node节点,先把所有的节点放入stack1中,然后pop出来,放到stack2中,然后stack2直接pop
def push(self, node):
# write code here
self.stack1.append(node)
# 所有的node都放进去了
def pop(self):
# return xx
# 如果stack2不为空,可执行出栈操作
if self.stack2!=[]:
return self.stack2.pop() # 且还要输出到控制台
# 为空,进一个出一个
elif self.stack2==[]:
# 依次stack1出,stack2进,return 出
for i in range(len(self.stack1)):
self.stack2.append(self.stack1.pop())
return self.stack2.pop()