题解 | 两个链表的第一个公共结点:暴力解法,我相信你肯定能看懂!
两个链表的第一个公共结点
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* h1, ListNode* h2) { // 1、处理边界 if(h1==nullptr||h2==nullptr) return nullptr; // 2、统计各个链表的节点数 int num1=0,num2=0; ListNode* cur1=h1; ListNode* cur2=h2; while(cur1) { num1++; cur1=cur1->next; } while(cur2) { num2++; cur2=cur2->next; } cur1=h1; cur2=h2; if(num1>num2) { for(int i=0;i<num1-num2;i++) cur1=cur1->next; } else if(num1<num2) { for(int i=0;i<num2-num1;i++) cur2=cur2->next; } else { cur1=h1; cur2=h2; } // 3、双方都以最小的链表长度为起点,来进行遍历,如果相遇则就是第一个相交结点! while(cur1!=cur2) { cur1=cur1->next; cur2=cur2->next; } return cur1; } };