Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Kiểm tra hiệu tuyệt đối giữa các nút liên tiếp trong Linked List bằng 1 trong Python

Cho singly linked list chứa số nguyên. Kiểm tra xem hiệu tuyệt đối giữa hai nút liên tiếp có luôn bằng 1 hay không.

Ví dụ: 5→6→7→8→7→6→5→4 → mọi cặp liền kề chênh 1 → True.

Thuật toán

  • Duyệt từ head, với mỗi nút curr có next:
  • Nếu abs(curr.val - curr.next.val) != 1 → False.
  • Hết danh sách → True.

Triển khai


import math

class LinkNode:
    def __init__(self, value):
        self.value = value
        self.link = None

def make_list(elements):
    head = LinkNode(elements[0])
    for el in elements[1:]:
        ptr = head
        while ptr.link:
            ptr = ptr.link
        ptr.link = LinkNode(el)
    return head

def solve(start_node):
    curr = start_node
    while curr:
        if curr.link is None:
            break
        if abs(curr.value - curr.link.value) != 1:
            return False
        curr = curr.link
    return True

head = make_list([5, 6, 7, 8, 7, 6, 5, 4])
print(solve(head))  # True

Đầu vào / Đầu ra

Input: [5, 6, 7, 8, 7, 6, 5, 4]
Output: True