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

วิธีตรวจสอบว่า Absolute Difference ระหว่าง Node ติดกันใน Linked List เท่ากับ 1 ใน Python

ปัญหา

Singly Linked List เก็บจำนวนเต็ม ตรวจสอบว่า |ค่าปัจจุบัน - ค่าถัดไป| == 1 สำหรับทุกคู่ที่ติดกัน

ตัวอย่าง: 5→6→7→8→7→6→5→4 → True

แนวทางแก้ปัญหา

  1. เดินผ่าน List ด้วย Pointer temp
  2. ตรวจสอบ abs(temp.val - temp.next.val) == 1
  3. หากมีคู่ไหนไม่ผ่าน คืน 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