首先弄清楚两个链表的长度,然后让长的链表先走,走到剩下长度相等的时候,两个链表再一起走,直到找到公共节点。
public class Solution {
public ListNode FindFirstCommonNode(ListNode pHead1, ListNode pHead2) {
if(pHead1==null || pHead2 == null){
return null;
}
int len1=0;
ListNode temp1 = pHead1;
while(temp1.next!= null){
temp1 = temp1.next;
len1++;
}
int len2=0;
ListNode temp2 = pHead2;
while(temp2.next!= null){
temp2 = temp2.next;
len2++;
}
//长的先走
int higher = len1-len2;
if(higher>=0){
while(higher-- != 0){
pHead1=pHead1.next;
}
}else{
while(higher++ != 0){
pHead2=pHead2.next;
}
}
//一起走
while(pHead1!=null && pHead2 != null && pHead1.val != pHead2.val){
pHead1=pHead1.next;
pHead2=pHead2.next;
}
return pHead2;
}
}