在 Python 中检查链表中连续节点的绝对差是否为 1
假设我们有一个单链表,其中每个节点包含一个整数。我们必须找出两个连续节点的绝对差是否为 1。
因此,如果输入类似于 start_node->5->6->7->8->7->6->5->4,则输出将为 True。
要解决此问题,我们将遵循以下步骤 -
- temp := start_node
- 当 temp 不为 null 时,执行
- 如果 temp.link 与 null 相同,则
- 退出循环
- 如果 |(temp) 的值 - (temp.link) 的值| 不等于 1,则
- 返回 False
- temp := temp.link
- 如果 temp.link 与 null 相同,则
- 返回 True
示例
让我们看看以下实现方式,以更好地理解 -
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
广告