Python單鏈表中間節點查詢程式


假設我們有一個單鏈表節點,我們需要找到中間節點的值。如果存在兩個中間節點,則返回第二個節點的值。我們需要嘗試在單次遍歷中解決這個問題。

例如,如果輸入為[5,9,6,4,8,2,1,4,5,2],則輸出為2。

為了解決這個問題,我們將遵循以下步驟:

  • p := 節點

  • d := 0, l := 0

  • 當節點不為空時,執行以下操作:

    • 如果d不等於2,則

      • 節點 := 節點的下一個節點

      • l := l + 1, d := d + 1

    • 否則:

  • p := p的下一個節點, d := 0

    • 如果l為奇數,則返回p的值,否則返回p的下一個節點的值。

讓我們看下面的實現來更好地理解。

示例

class ListNode:
   def __init__(self, data, next = None):
      self.val = data
      self.next = next
   def make_list(elements):
      head = ListNode(elements[0])
   for element in elements[1:]:
      ptr = head
      while ptr.next:
         ptr = ptr.next
         ptr.next = ListNode(element)
      return head
class Solution:
   def solve(self, node):
      p=node
      d=0
      l=0
   while node:
      if d!=2:
         node=node.next
         l+=1
         d+=1
      else:
         p=p.next
         d=0
   return p.val if l & 1 else p.next.val
ob = Solution()
head = make_list([5,9,6,4,8,2,1,4,5,2])
print(ob.solve(head))

輸入

Input:
[5,9,6,4,8,2,1,4,5,2]

輸出

2

更新於:2020年10月5日

瀏覽量:255

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.