剑指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

相关推荐

10-09 00:50
已编辑
长江大学 算法工程师
不期而遇的夏天:1.同学你面试评价不错,概率很大,请耐心等待;2.你的排名比较靠前,不要担心,耐心等待;3.问题不大,正在审批,不要着急签其他公司,等等我们!4.预计9月中下旬,安心过节;5.下周会有结果,请耐心等待下;6.可能国庆节前后,一有结果我马上通知你;7.预计10月中旬,再坚持一下;8.正在走流程,就这两天了;9.同学,结果我也不知道,你如果查到了也告诉我一声;10.同学你出线不明朗,建议签其他公司保底!11.同学你找了哪些公司,我也在找工作。
点赞 评论 收藏
分享
1 收藏 评论
分享
牛客网
牛客企业服务