个人博客:小景哥哥
36.两个链表的第一个公共结点
题目描述
输入两个链表,找出它们的第一个公共结点。
public class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}
public class Solution {
public ListNode FindFirstCommonNode(ListNode pHead1, ListNode pHead2) {
int len1 = 0, len2 = 0;
ListNode lp1 = pHead1;
ListNode lp2 = pHead2;
ListNode pHeadLong = pHead1;
ListNode pHeadShort = pHead2;
int nLengthDif = 0;
while(lp1 != null){
len1++;
lp1 = lp1.next;
}
while(lp2 != null){
len2++;
lp2 = lp2.next;
}
if(len2 > len1){
pHeadLong = pHead2;
pHeadShort = pHead1;
nLengthDif = len2 - len1;
}else{
nLengthDif = len1 - len2;
}
for(int i = 0; i < nLengthDif; ++i)
pHeadLong = pHeadLong.next;
while(pHeadLong != null && pHeadShort != null && pHeadLong != pHeadShort){
pHeadLong = pHeadLong.next;
pHeadShort = pHeadShort.next;
}
ListNode res = pHeadLong;
return res;
}
}