问题描述:用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。
题解:
有两个栈,例如abcd分别入栈,入栈1位:dcba,出栈到栈2中为abcd,此时如果出栈2的顺序就是先a,在bcd,符合了队列的特性
pop操作:出队列时,先判断第二个栈有没有内容,如果有,则直接从栈2中出,如果没有,则将栈1中的内容压入栈2,在从栈2出
push操作:直接push到栈1中即可
# -*- coding:utf-8 -*-
class Solution:
def __init__(self):
self.items1= []
self.items2= []
def push(self, node):
# 将节点直接push到栈1即可
# write code here
self.items1.append(node)
def pop(self):
# return xx
if not self.items1 and not self.items2:
return -1
else:
if self.items2:
return self.items2.pop()
else:
while self.items1:
self.items2.append(self.items1.pop())
return self.items2.pop()