# 双指针
class Solution:
def getIntersectionNode(self, headA: ListNode, headB: ListNode) -> Optional[ListNode]:
A = headA
B = headB
while A and B:
if A == B:
return A
A = A.next
B = B.next
if A is None and B is None:
return None
if A is None:
A = headB
if A is None:
B = headA
# 另外一种写法
class Solution:
def getIntersectionNode(self, headA: ListNode, headB: ListNode) -> Optional[ListNode]:
A, B = headA, headB
while A != B:
A = A.next if A else headB
B = B.next if B else headA
return A