BM10 两个链表的第一个公共结点



function ListNode(x){
this.val = x;
this.next = null;
}
function FindFirstCommonNode(pHead1, pHead2)
{
let p1 = pHead1
let p2 = pHead2
//p1长度遍历
let k1 = 0
while(p1){
p1 = p1.next
k1++
}
//p2遍历长度
let k2 = 0
while(p2){
p2 = p2.next
k2++
}
let n = k1>k2 ? k1-k2 : k2-k1
//长的先走n步
for(let i=0; i<n; i++) {
if(k1 > k2) {
pHead1 = pHead1.next
}else {
pHead2 = pHead2.next
}
}
//同步走
while(pHead1 !== pHead2) {
pHead1 = pHead1.next
pHead2 = pHead2.next
}
return pHead1
}
module.exports = {
FindFirstCommonNode : FindFirstCommonNode
};

浙公网安备 33010602011771号