栈:先进后出
队列:先进先出
用两个栈实现队列的功能,stack1拿来push,stack2拿来pop,但是注意,stack2有剩下的值的时候要先pop,再把stack1的倒进stack2去pop,否则直接把stack1的值倒进stack2就pop的话,顺序会乱,会导致stack2最初剩下的值不能第一个pop出去
# -*- coding:utf-8 -*-
class Solution:
def __init__(self):
self.stack1 = []
self.stack2 = []
def push(self, node):
# write code here
self.stack1.append(node)
def pop(self):
# return xx
if self.stack2 != []: return self.stack2.pop()
else:
while self.stack1 != []:
self.stack2.append(self.stack1.pop())
return self.stack2.pop()
否则就如下第二种,会忽略原本stack2最初有的值
def __init__(self):
self.stack1 = []
self.stack2 = []
def push(self, node):
# write code here
self.stack1.append(node)
def pop(self):
# return xx
if self.stack2 != []: return self.stack2.pop()
else:
while self.stack1 != []:
self.stack2.append(self.stack1.pop())
return self.stack2.pop()
否则就如下第二种,会忽略原本stack2最初有的值
# -*- coding:utf-8-*-
classSolution:
def __init__(self):
self.stack1 = []
self.stack2 = []
def push(self, node):
# write code here
self.stack1.append(node)
def pop(self):
# returnxx
whileself.stack1 != []:
self.stack2.append(self.stack1.pop())
returnself.stack2.pop()