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
};

  

posted @ 2022-03-27 21:53  方头小小狮  阅读(40)  评论(0)    收藏  举报