Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

ตรวจสอบว่า Element ใน Queue ติดกันเป็นคู่ Consecutive หรือไม่ด้วย Python


สมมติมี Queue ที่เต็มไปด้วยตัวเลข ต้องตรวจสอบว่า Element ติดกันใน Queue เป็นคู่ Consecutive (ต่างกัน 1) หรือไม่

เช่น Input que = [3,4,6,7,8,9] Output จะเป็น True

ขั้นตอนการแก้:

  • สร้าง Queue q ใส่ Element ทั้งหมดจาก List ที่ให้มา
  • สร้าง List temp
  • While q ไม่ว่าง: นำ Element หน้าสุดของ Queue ใส่ temp และลบออกจาก Queue
  • สร้าง List temp2
  • While temp ไม่ว่าง: นำ Element สุดท้ายของ temp ใส่ temp2 และลบออกจาก temp
  • result := True
  • While ขนาด temp2 > 1: ดึง x, y มาจาก temp2 ตามลำดับ ถ้า |x - y| != 1 result = False ใส่ x, y กลับ Queue
  • ถ้า temp2 เหลือ 1 Element ใส่กลับ Queue
  • Return 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))

Input

[3,4,6,7,8,9]

Output

True