Python 中檢查佇列元素是否成對連續
假設我們有一個裝滿數字的佇列。我們必須檢查佇列中連續的元素是否成對連續。
因此,如果輸入類似於 que = [3,4,6,7,8,9],則輸出將為 True。
為了解決這個問題,我們將遵循以下步驟:
- q := 定義一個佇列並將給定列表中的所有元素插入到 q 中
- temp := 一個新列表
- 當 q 不為空時,執行以下操作:
- 將佇列的第一個元素插入到 temp 中,並從佇列中刪除第一個元素
- temp2 := 一個新列表
- 當 temp 不為空時,執行以下操作:
- 將 temp 的最後一個元素插入到 temp2 中
- 從 temp 中刪除最後一個元素
- result := True
- 當 temp2 的大小大於 1 時,執行以下操作:
- x := temp2 的最後一個元素
- 從 temp2 中刪除最後一個元素
- y := temp2 的最後一個元素
- 從 temp2 中刪除最後一個元素
- 如果 |x - y| 不等於 1,則:
- result := False
- 將 x 和 y 插入到 q 中
- 如果 temp2 的大小為 1,則:
- 將 temp2 的最後一個元素插入到 q 中
- 返回 result
示例
讓我們看看以下實現以獲得更好的理解:
import queue def solve(que): q = queue.Queue() for i in que: q.put(i) temp = [] while q.qsize() != 0: temp.append(q.queue[0]) q.get() temp2 = [] while len(temp) != 0: temp2.append(temp[len(temp) - 1]) temp.pop() result = bool(True) while len(temp2) > 1: x = temp2[len(temp2) - 1] temp2.pop() y = temp2[len(temp2) - 1] temp2.pop() if abs(x - y) != 1: result = False q.put(x) q.put(y) if len(temp2) == 1: q.put(temp2[len(temp2) - 1]) return result que = [3,4,6,7,8,9] print(solve(que))
輸入
[3,4,6,7,8,9]
輸出
True
廣告