两个链表的第一个公共节点

两个链表的第一个公共节点

题目描述

输入两个链表,找出它们的第一个公共结点。

  • 从共同节点看,两者最好一起跑,所以需要长链表的指针先跑到和短链表相同长度的地方。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
function FindFirstCommonNode(pHead1, pHead2)
{
// write code here

let len1=getLen(pHead1);
let len2=getLen(pHead2);
let len,pLong,pShort;
if(len1>len2){
len=len1-len2;
pLong=pHead1;
pShort=pHead2;
}else{
len=len2-len1;
pLong=pHead2;
pShort=pHead1;
}
while(len--){
pLong=pLong.next
}
while(pLong!==null){
if(pLong.val==pShort.val){
return pLong;
}
pLong=pLong.next;
pShort=pShort.next;
}
return null;
}
function getLen(pHead){
let length=0;
while(pHead!==null){
pHead=pHead.next;
length++;
}
return length;
}