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

更新於: 2021-01-19

178 次檢視

開啟你的 職業生涯

完成課程後獲得認證

開始學習
廣告