Loading...

两个链表的第一个公共结点

在这里插入图片描述 在这里插入图片描述

求解代码

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
public ListNode FindFirstCommonNode(ListNode pHead1, ListNode pHead2) {
        // 初始化两个临时指针,分别指向两个链表的头节点
        ListNode temp1 = pHead1;
        ListNode temp2 = pHead2;

        // 只要两个指针不指向同一个节点,就继续遍历
        while (temp1 != temp2) {
            // - temp1遍历完自己的链表(为null),就切换到链表2的头节点继续遍历
            // - 否则,temp1正常后移
            temp1 = temp1 == null ? pHead2 : temp1.next;
            // - temp2遍历完自己的链表(为null),就切换到链表1的头节点继续遍历
            // - 否则,temp2正常后移
            temp2 = temp2 == null ? pHead1 : temp2.next;
        }

        // temp1和temp2要么指向第一个公共节点,要么都为null(无公共节点)
        return temp1;
    }
最后更新于 2026-04-05 17:35:33
Code Road Record