题解 | #两个链表的第一个公共结点#

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

https://www.nowcoder.com/practice/6ab1d9a29e88450685099d45c9e31e46

/*function ListNode(x){
    this.val = x;
    this.next = null;
}*/
function FindFirstCommonNode(pHead1, pHead2)
{
    // write code here
    let sum1 = 0
    let sum2 = 0

    let p1 = pHead1
    while(p1) {
        sum1 ++
        p1 = p1.next    
    }

    let p2 = pHead2
    while(p2) {
        sum2 ++
        p2 = p2.next
    }
    
    let diff = Math.abs(sum1 - sum2)
    let longer = sum1 >= sum2 ? pHead1 : pHead2
    let shorter = sum1 >= sum2 ? pHead2 : pHead1

    while(diff >0) {
        longer = longer.next
        diff--
    }
    while (longer && shorter) {
        if(longer === shorter) {
            return longer
        }
        longer = longer.next
        shorter = shorter.next
    }
    return null
}
module.exports = {
    FindFirstCommonNode : FindFirstCommonNode
};

全部评论

相关推荐

喜欢喜欢喜欢:这是我见过最长最臭的简历
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务