用两个栈实现队列

来源:互联网 发布:淘宝自动回复设置技巧 编辑:程序博客网 时间:2024/06/05 17:25

牛客网 《剑指offer》

时间限制:1秒 空间限制:32768K 热度指数:145526
本题知识点: 队列

题目描述

用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。

解题思路

这里写图片描述

队列经过一个栈,将反序输出,输出的队列再经过一个栈,又一次反序,变回了原来的顺序

注意:当要把第一个栈的元素弹出转移到第二个栈时,必须把第一个栈此时所有的元素都弹出,否则会乱序

程序

# -*- 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 len(self.stack2) == 0:            for _ in range(len(self.stack1)):                self.stack2.append(self.stack1.pop())        if len(self.stack2) == 0:            return None        else:            return self.stack2.pop()

结果

运行时间:28ms占用内存:5768k