/*
public class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}*/
public class Solution {
// 由于公共部分在链表后面,所以先统计长度, 然后移动长的节点,保证2个节点长度相同,在同时比较。
public ListNode FindFirstCommonNode(ListNode pHead1, ListNode pHead2) {
int h1 = 0;
int h2 = 0;
for (ListNode node = pHead1; node != null; node = node.next) {
h1++;
}
for (ListNode node = pHead2; node != null; node = node.next) {
h2++;
}
ListNode cu2 = pHead2;
ListNode cu1 = pHead1;
int i = 0;
if (h1 < h2) {
while (i < h2 - h1) {
cu2 = cu2.next;
i++;
}
}
int j = 0;
if (h1 > h2) {
while (j < h1 - h2) {
cu1 = cu1.next;
j++;
}
}
while (cu1 != null && cu2 != null) {
if (cu1.val == cu2.val) {
return cu1;
}
cu1 = cu1.next;
cu2 = cu2.next;
}
return null;
}
}