题解 | #两个链表的第一个公共结点#
两个链表的第一个公共结点
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) { ListNode *p1,*p2; p1=pHead1; p2=pHead2; int len1=0,len2=0; while(p1!=nullptr) { len1++; p1=p1->next; } while(p2!=nullptr) { len2++; p2=p2->next; } int n=len1>len2?(len1-len2):(len2-len1); p1=pHead1; p2=pHead2; for(int i=n;i>0;i--) { if(len1>len2) { p1=p1->next; } else { p2=p2->next; } } while(p1!=p2) { p1=p1->next; p2=p2->next; } return p1; } };