ปัญหา
Singly Linked List เก็บจำนวนเต็ม ตรวจสอบว่า |ค่าปัจจุบัน - ค่าถัดไป| == 1 สำหรับทุกคู่ที่ติดกัน
ตัวอย่าง: 5→6→7→8→7→6→5→4 → True
แนวทางแก้ปัญหา
- เดินผ่าน List ด้วย Pointer
temp - ตรวจสอบ
abs(temp.val - temp.next.val) == 1 - หากมีคู่ไหนไม่ผ่าน คืน
Falseทันที
ตัวอย่างโค้ด
import math
class link_node:
def __init__(self, value):
self.value = value
self.link = None
def make_list(elements):
head = link_node(elements[0])
for el in elements[1:]:
ptr = head
while ptr.link:
ptr = ptr.link
ptr.link = link_node(el)
return head
def solve(start_node):
temp = start_node
while temp:
if temp.link is None:
break
if abs(temp.value - temp.link.value) != 1:
return False
temp = temp.link
return True
start_node = make_list([5, 6, 7, 8, 7, 6, 5, 4])
print(solve(start_node)) # Trueอินพุต / เอาต์พุต
Input: [5, 6, 7, 8, 7, 6, 5, 4] Output: True