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
currcó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