剣指Offer-5.2つのスタックでキューを実現(Python)

3183 ワード

5.2つのスタックでキューを実装
『剣指Offer』ブラシ問題GitHubリンク
タイトルリンク
タイトル記述は2つのスタックで1つのキューを実現し,キューのPushとPop操作を完了する.キュー内の要素はintタイプです.
構想
  • スタック:先入後出
  • キュー:先入先出
  • 小学校の趣味の数学の問題のような気がします...
    2つのガラス管で、鋼玉を入れて、最後の鋼玉が出たときの順番と入れる順番をどうやって同じにしますか?
    答えは、2つのガラス管が互いに倒れていることです.
    コード:
    # -*- 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 not self.stack1 and not self.stack2:
                return []
            elif not self.stack2:
                while self.stack1 :
                    self.stack2.append(self.stack1.pop())
            return self.stack2.pop()