牛客网/剑指offer/2.两个栈模拟一个队列
python 2 语法
1.构造函数
def __init__(self,...):
ps:不写系统也会生成默认的无参构造方法。
2.self
定义类时,构造函数和实例函数都需要将self作为第一个参数。
作用:让self指向调用该实例方法的对象,或是指向被初始化的对象,以区分不同对象。
3.空: None
4.List(列表)的append、pop方法
List格式如下:
aList = [123, 'xyz', 'zara', 'abc']; 索引从‘0’开始
aList.append:将对象添加到列表末尾
aList.pop([index=-1]): 删除对象,默认操作对象下标为-1,即为最后一个元素
算法思路:
两个栈,一个作为输入栈,一个作为输出栈,就能实现先进先出的队列效果。
1.要注意从输入栈弹到输出栈时,要保证输出栈为空,否则会出现未定义的输出元素。
2.输出时,要从输入栈取出一个后弹到输出栈,因此两个栈同空。
3.弹出时要判断栈不为空
代码:
class Solution:
def __init__(self):
self.stack1 = []
self.stack2 = []
def push(self, node):
self.stack1.append(node)
# write code here
def pop(self):
if self.stack2 == []:
while self.stack1:
self.stack2.append(self.stack1.pop())
if self.stack2 != []:
return self.stack2.pop()
else:
return None
# return xx


