1. 程式人生 > >【劍指Offer】17用兩個棧實現佇列

【劍指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