【剑指Offer】17用两个栈实现队列

题目描述

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

时间限制:1秒;空间限制:32768K

解题思路

由于队列的特点是先进先出,而栈是先进后出,可以用两个栈串联来实现队列:栈1先进后出,栈1出栈栈2入栈,栈2后进先出,从全局来看实现了先进先出的功能。

# -*- coding:utf-8 -*-
class Solution:
    # 如果没有在__init__中初始化对应的实例变量的话,导致后续引用实例变量会出错
    def __init__(self): 
        self.stack1 = []
        self.stack2 = []
    def push(self, node):
        # write code here
        self.stack1.append(node)
    def pop(self):
        # return xx
        for i in range(len(self.stack1)):
            self.stack2.append(self.stack1.pop())
        x = self.stack2.pop()
        for i in range(len(self.stack2)):
            self.stack1.append(self.stack2.pop())
        return x

 

posted @ 2018-10-16 15:17  yucen  阅读(130)  评论(0编辑  收藏  举报