代碼
def get_intersection_node(self,headA, headB):
"""
使用雙指針的方法來(lái)更簡(jiǎn)單地找到兩個(gè)鏈表的第一個(gè)交叉點(diǎn)。雙指針?lè)椒ㄈ缦拢? 定義兩個(gè)指針 pA 和 pB 分別指向兩個(gè)鏈表的頭部 headA 和 headB炊琉。
同時(shí)移動(dòng)指針 pA 和 pB狸相,當(dāng)其中一個(gè)指針到達(dá)鏈表的末尾時(shí),將其指向另一個(gè)鏈表的頭部。
當(dāng)兩個(gè)指針相遇時(shí)替梨,即為第一個(gè)交叉點(diǎn)
"""
if not headA or not headB:
return None
pA, pB = headA, headB
while pA != pB:
pA = pA.next if pA else headB
pB = pB.next if pB else headA
return pA
"""測(cè)試
# 創(chuàng)建兩個(gè)鏈表
intersect_node = ListNode(8, ListNode(4, ListNode(5)))
headA = ListNode(4, ListNode(1, intersect_node))
headB = ListNode(5, ListNode(0, ListNode(1, intersect_node)))
# 輸出第一個(gè)交叉點(diǎn)的值
print(get_intersection_node(headA, headB).val)
"""