python-1.用兩個棧實現隊列

題目描述:

  • 用兩個棧來實現一個隊列,完成隊列的Push和Pop操作。

解題思路:

  • 隊列:先進先出
  • 棧:先進後出

  • 一個棧用來EnQueue:

    • 每次進來元素都送入該棧
  • 另外一個棧來轉換順序做DeQueue:

    • 兩個棧同時爲空時候,return None
    • 當第二個棧沒有元素時,將第一個棧的元素全部Push進第二個棧,此時最頂端的元素即隊首,直接Pop即可
    • 當第二個棧有元素時候,直接Pop頂端元素
    class Solution:
        def __init__(self):
            self.stack1 = []
            self.stack2 = []
        def Push(self, e):
            self.stack1.append(e)
        def Pop(self):
            if len(self.stack2) == 0 and len(self.stack1) == 0:
                print('Empty')
                return None
            elif len(self.stack2) == 0:
                while self.stack1:
                        self.stack2.append(self.stack1.pop())
                return self.stack2.pop()
            else:
                return self.stack2.pop()
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章