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
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP