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