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 次查看

开启你的 职业生涯

完成课程后获得认证

开始学习
广告