题解 | #两个链表的第一个公共结点#
两个链表的第一个公共结点
https://www.nowcoder.com/practice/6ab1d9a29e88450685099d45c9e31e46
/* struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { } };*/ class Solution { public: ListNode* FindFirstCommonNode( ListNode* pHead1, ListNode* pHead2) { int l1 = 0, l2 = 0; ListNode* temp1 = pHead1, *temp2 = pHead2; while (temp1 || temp2) { if(temp1){ temp1 = temp1->next; l1++; } if(temp2){ temp2 = temp2->next; l2++; } } if(l1 >= l2){ temp1 = pHead1; temp2 = pHead2; for(int i=0; i < l1 - l2; i++){ temp1 = temp1->next; } while (temp2) { if(temp1 == temp2) break; temp2 = temp2->next; temp1 = temp1->next; } }else { temp1 = pHead1; temp2 = pHead2; for(int i=0; i < l2 - l1; i++){ temp2 = temp2->next; } while (temp1) { if(temp1 == temp2) break; temp2 = temp2->next; temp1 = temp1->next; } } return temp1; } };