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;
}
|