题解 | 两个链表的第一个公共结点
/* struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { } };*/ class Solution { public: ListNode* FindFirstCommonNode( ListNode* pHead1, ListNode* pHead2) { ListNode* curr1 = pHead1; ListNode* curr2 = pHead2; int size_1 = 0; int size_2 = 0; while (curr1 != nullptr) { size_1++; curr1 = curr1->next; } while (curr2 != nullptr) { size_2++; curr2 = curr2->next; } curr1 = pHead1; curr2 = pHead2; if (size_1 < size_2) { for (int i = 0; i < size_2 - size_1; i++) { curr2 = curr2->next; } while (curr2 != nullptr) { if (curr1->val == curr2->val) { return curr1; } else { curr1 = curr1->next; curr2 = curr2->next; } } } else { for (int i = 0; i < size_1 - size_2; i++) { curr1 = curr1->next; } while (curr1 != nullptr) { if (curr1->val == curr2->val) { return curr2; } else { curr1 = curr1->next; curr2 = curr2->next; } } } return nullptr; } };
找到两个链表的长度,然后预处理两个列表到相同长度然后开始遍历对比就可以#剑指offer#