각 노드에 정수 값이 포함된 단일 연결 목록이 있다고 가정합니다. 연속된 두 노드 간의 절대 차이가 1인지 확인해야 합니다.
따라서 입력이 start_node->5->6->7->8->7->6->5->4와 같으면 출력은 True가 됩니다.
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
- temp :=start_node
- temp가 null이 아닌 동안 do
- temp.link가 null과 같으면
- 루프에서 나오다
- if |(temp) 값 - (temp.link) 값| 1과 같지 않은 경우
- 거짓을 반환
- temp :=temp.link
- temp.link가 null과 같으면
- 참 반환
예시
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
import math class link_node: def __init__(self, value): self.value = value self.link = None def create_node(value): temp = link_node(value) temp.value = value temp.link = None return temp def make_list(elements): head = link_node(elements[0]) for element in elements[1:]: ptr = head while ptr.link: ptr = ptr.link ptr.next = link_node(element) return head def solve(start_node): temp = start_node while (temp): if (temp.link == 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))
입력
[5, 6, 7, 8, 7, 6, 5, 4]
출력
True