剑指offer-36:两个链表的第一个公共结点

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

https://www.nowcoder.com/practice/6ab1d9a29e88450685099d45c9e31e46?tpId=13&&tqId=11189&rp=1&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking

使用双指针法

考虑到两个链表的初始长度可能不同,因此需要通过一些手段对两个链表进行处理。
解决方法:a+b = b+a
当a链表循环结束,就开始循环b链表,弥补长度的不足,不影响代码执行结果
当b链表循环结束,就开始循环a链表,弥补长度的不足,不影响代码执行结果
a链表:4->1->8>-4->5
b链表: 5->0->1->8->4->5

改变之后的链表结构
图片上面和我的写法,我是将增加的链表放在后面,应该是:41845+501845,下面应该是501845+41845
公共节点是845

长度一致之后,采用双指针方法
代码:

function FindFirstCommonNode(pHead1, pHead2)
{
    // write code here
    let p1 = pHead1
    let p2 = pHead2
    while(p1 != p2){
        p1 = p1 ? p1.next : pHead2
        p2 = p2 ? p2.next : pHead1
    }
    return p1
}
全部评论
如果有思路错误帮我指出一下吧,谢谢
点赞 回复 分享
发布于 2021-06-22 15:03

相关推荐

半解316:内容充实,细节需要修改一下。 1,整体压缩为一页。所有内容顶格。 2,项目描述删除,直接写个人工作量 修改完之后还需要建议,可以私聊
点赞 评论 收藏
分享
05-19 19:57
蚌埠学院 Python
2237:Gpa70不算高,建议只写排名,个人技能不在多而在精,缩到8条以内。项目留一个含金量高的,减少间距弄到一页,硕士简历也就一页,本科不要写很多
实习,投递多份简历没人回...
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务