题解 | #两个链表的第一个公共结点#
两个链表的第一个公共结点
https://www.nowcoder.com/practice/6ab1d9a29e88450685099d45c9e31e46
/* struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { } };*/ class Solution { public: int GetListLength(ListNode *list) { int result = 0; while (list != nullptr) { list = list->next; result++; } return result; } ListNode* FindFirstCommonNode( ListNode* pHead1, ListNode* pHead2) { ListNode *l = pHead1, *r = pHead2; int left = GetListLength(l); int right = GetListLength(r); l = pHead1; r = pHead2; int diff = abs(left-right); if (left < right) { ListNode* tmp = l; l = r; r = tmp; } while (diff > 0) { l = l->next; diff--; } while (l != nullptr && r != nullptr) { if (l == r) { return l; } l = l->next; r = r->next; } return nullptr; } };