//如果两个链表长度相同,直接遍历即可;
//长度不同,如链表1长度len1,链表2长度为len2,len1>len2,如下所示p1节点从链表1的第len1-len2+1个节点,链表2从链表头开始遍历,此时两个链表遍历长度相等。
同时考虑没有公共节点的情况。
public ListNode FindFirstCommonNode(ListNode pHead1, ListNode pHead2) {
if(pHead1==null || pHead2== null) return null;
ListNode l1 = pHead1;
ListNode l2 = pHead2;
while(l1!=l2){
l1 = l1.next;
l2 = l2.next;
if(l1==null && l2==null) return null;//同时注意在没有公共节点的时候,进行判别,否则出现死循环;
if(l1==null){
l1 = pHead2;
}
if(l2==null){
l2 = pHead1;
}
}
return l1;
}
京公网安备 11010502036488号