在 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 次瀏覽

開啟您的 職業

透過完成課程獲得認證

開始
廣告
© . All rights reserved.