給你兩個單鏈表的頭節點 headA 和 headB ,請你找出并返回兩個單鏈表相交的起始節點。如果兩個鏈表不存在相交節點,返回 null 。
圖示兩個鏈表在節點 c1 開始相交:
題目數據 保證 整個鏈式結構中不存在環。
注意,函數返回結果后,鏈表必須 保持其原始結構 。
解題思路
跑兩遍,兩遍長度加起來一樣。用flag記錄是否跑完了兩遍,即每個flag只應該經歷一次None
AC代碼
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = Noneclass Solution:def getIntersectionNode(self, headA: ListNode, headB: ListNode) -> Optional[ListNode]:aflag, bflag = headA, headBflag = 0while aflag != bflag:if aflag.next:aflag = aflag.nextelse:if flag == 1:flag = 2breakaflag = headBflag = 1bflag = bflag.next if bflag.next else headAreturn aflag if flag != 2 else None