题解 | #两个链表的第一个公共结点#
两个链表的第一个公共结点
http://www.nowcoder.com/practice/6ab1d9a29e88450685099d45c9e31e46
只有两种状态
1.有公共节点;2.么有公共节点
双指针从头扫描假设指针p ,q,当某个节点走到最后时,即p = NULL或者q = NULL;就从另一个链表的头节点开始继续扫描,当两个节点相遇,则表明该节点是第一个公共节点。
class Solution {
public:
ListNode *findFirstCommonNode(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 q;
}
};