# Definition for singly-linked list.
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
def getIntersectionNode(self, headA: ListNode, headB: ListNode) -> ListNode:
curA, curB = headA, headB
#跑得快的一定会追上跑得慢的,类似于金星和地球都围绕太阳公转,总有一天太阳地球金星会位于同一条直线上
#当链表长度相同时,不管有无交点则两个链表都会查询相同次数找出交点,无交点时为NULL
#当长度不同时,两个指针总会有一次二者在交点或NULL处相遇。
#while循环的条件就是:只要二者不相等,就继续找
#以上就是该算法的精髓!
while curA != curB:
curA = curA.next if curA else headB
curB = curB.next if curB else headA
return curA