劍指 offer_第五題_用兩個棧實現佇列
阿新 • • 發佈:2018-11-15
平臺
牛客網
語言
python2.7.3
作業內容
題目描述
用兩個棧來實現一個佇列, 完成佇列的 Push 和 Pop 操作。 佇列中的元素為 int 型別。
題目理解
什麼是棧?
棧(有時稱為 “後進先出棧”)是一個項的有序集合,這種排序原則有時被稱為 LIFO(後進先出), 其中新增移除新項總髮生在同一端。這一端通常稱為 “頂部”。與頂部對應的端稱為 “底部”。
什麼是佇列?
佇列是項的有序結合,其中新增新項的一端稱為隊尾,移除項的一端稱為隊首。這種排序原則有時被稱為 FIFO(先進先出)當一個元素從隊尾進入佇列時,一直向隊首移動,直到它成為下一個需要移除的元素為止。
push:將元素放進隊尾
pop: 將隊頂的元素刪除,並返回
解題思路
定義棧
定義 push 和 pop 函式
程式
# -*- coding:utf-8 -*- class Solution: def __init__(self): self.stack1 = [] #定義兩個stack, self.stack2 = [] def push(self, node): self.stack1.append(node) #往佇列中新增元素,將元素放進隊尾 def pop(self): # 沒看懂啊 if len(self.stack2): return self.stack2.pop() while(self.stack1): self.stack2.append(self.stack1.pop()) return self.stack2.pop()