题目描述

输入两个链表,找出它们的第一个公共节点。
如下面的两个链表:
图片说明
在节点 c1 开始相交。

解题思路

两个链表互相加上对方的长度,使它们的长度一致,用两个指针去分别检查两个链表,最终会找到公共节点。

Java代码实现

public class Solution {
    public ListNode FindFirstCommonNode(ListNode pHead1, ListNode pHead2) {
        if (pHead1 == null || pHead2 == null) return null; 
        ListNode ptr1 = pHead1;
        ListNode ptr2 = pHead2;
        while (ptr1 != ptr2) {
            ptr1 = ptr1 != null ? ptr1.next : pHead2;
            ptr2 = ptr2 != null ? ptr2.next : pHead1;
        }
        return ptr1;
    }
}