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

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

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

思路:1、分别遍历两个链表,记录两个链表的长度,尾结点相同就是相交,否则就不相交
      2、求第一个交点:长的链表先走(长度差)步,再同时走,第一个相同就是交点

struct ListNode* FindFirstCommonNode(struct ListNode* pHead1, struct ListNode* pHead2 ) {
    struct ListNode* tail1 = pHead1;
    struct ListNode* tail2 = pHead2;
    int len1 = 1;
    int len2 = 1;
    while(tail1)
    {
        tail1 = tail1->next;
        len1++;
    }
    while(tail2)
    {
        tail2 = tail2->next;
        len2++;
    }
    if(tail1 != tail2)
        return NULL;
    int len = abs(len1-len2);
    struct ListNode* longlist = pHead1;
    struct ListNode* shortlist = pHead2;
    if(len1 < len2)
    {
        longlist = pHead2;
        shortlist = pHead1;
    }
    while(len--)
    {
        longlist = longlist->next;
    }
    while(longlist != shortlist)
    {
        longlist = longlist->next;
        shortlist = shortlist->next;
    }
    return longlist;
}

全部评论

相关推荐

CARLJOSEPH...:宝宝你戾气太大了
点赞 评论 收藏
分享
小浪_Coding:找硬件测试,也可兼顾软测欧, 简历还可以的 ,注意排版,项目写的有条理一点, 然后个人技能多加点, 润色好简历之后就开始沟通海投了,深圳,东莞这边做硬件相关的公司还不少, 医疗类,仪器类的都可以尝试
点赞 评论 收藏
分享
07-02 13:52
武汉大学 golang
骗你的不露头也秒
牛客87776816...:😃查看图片
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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