题解 | #两个链表的第一个公共结点#
两个链表的第一个公共结点
http://www.nowcoder.com/practice/6ab1d9a29e88450685099d45c9e31e46
/*
public class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}*/
public class Solution {
public ListNode FindFirstCommonNode(ListNode pHead1, ListNode pHead2) {
if(pHead1 == null && pHead2 == null){
return null;
}
ListNode cur1 = pHead1;
ListNode cur2 = pHead2;
int count1 = 0;
int count2 = 0;
while(cur1 != null && cur1.next != null){
count1++;
cur1 = cur1.next;
}
cur1 = pHead1;
while(cur2 != null && cur2.next != null){
count2++;
cur2 = cur2.next;
}
cur2 = pHead2;
int count3 = Math.abs(count1 - count2);
if(count1 > count2){
for(int i = 0; i < count3; i++){
cur1 = cur1.next;
}
}else{
for(int i = 0; i < count3; i++){
cur2 = cur2.next;
}
}
while(cur1 != cur2){
if(cur1 != null && cur2 != null){
cur1 = cur1.next;
cur2 = cur2.next;
}else{
return null;
}
}
return cur1;
}
}