算法步骤:
用两个指针分别从两个链表头部开始扫描,每次分别走一步;
如果指针走到null,则从另一个链表头部开始走;
当两个指针相同时,
如果指针不是null,则指针位置就是相遇点;
如果指针是 null,则两个链表不相交;
class Solution {
public:
ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) {
auto p = headA, q = headB;
while (p != q){
if (p) p = p->next;
else p = headB;
if (q) q = q->next;
else q = headA;
}
return p;
}
};