สมมติมี 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