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
广告