在 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
  • 返回 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

更新日期:2021 年 1 月 18 日

101 次浏览

开启您的 职业

通过完成课程获得认证

开始
广告