栈:先进后出
队列:先进先出
用两个栈实现队列的功能,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最初有的值
# -*- 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()