题目要求:
思路:
思路1:(伪代码)
定义类:
初始化:
初始化栈1 #python用列表代替栈,以列表0为栈底,-1为栈顶即可
初始化栈2
push函数(要push的值):
栈1入栈,使用列表append即可将参数放入-1(栈顶)位置
pop函数:
由于两栈操作,将栈1入栈的元素取出再压入栈2,此时栈2的栈顶即为先入参数,然后栈2进行出栈操作就能实现队列的先进先出操作
如果栈2有值:
直接栈2出栈返回即可
如果栈2无值,栈1有值,则说明需要进行反转操作:
将栈1元素依次出栈放入栈2中
然后栈2出栈返回即可
否则:
说明队列空,返回空
代码如下:
# -*- coding:utf-8 -*-
class Solution:
def __init__(self):
self.stack1 = []
self.stack2 = []
def push(self, node):
self.stack1.append(node)
# write code here
def pop(self):
if len(self.stack2) > 0:
return self.stack2.pop(-1)
elif len(self.stack1) > 0:
while len(self.stack1) > 0:
self.stack2.append(self.stack1.pop(-1))
return self.stack2.pop(-1)
else:
return None
# return xx