思路:
用两个指针先遍历两个链表, 如果两个指针相同了, 那么直接返回其一, 说明到了重复节点了. 如果第一遍遍历没有找到重复节点, 那谁遍历到了自己链表的尾部, 谁就回到另外那个链表的头部继续遍历, 如果第二遍还没有的话, 两个指针会最终同时停在空指针上, 返回空即可.
ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) {
if (! headA || ! headB) return NULL;
ListNode* t1 = headA, *t2 = headB;
while (t1 != t2) {
t1 = t1->next;
t2 = t2->next;
if (t1 == t2)
break;
if (! t1) t1 = headB;
if (! t2) t2 = headA;
}
return t1;
}