Leetcode_相交链表

✨✨所属专栏:LeetCode刷题专栏✨✨

✨✨作者主页:嶔某✨✨

题目:

 题解:

看到这个题目首先我们要排除链表逆置的想法,如图、因为c1节点只有一个next指针,逆置后不可能同时指向a2和b3节点。

其次有的的同学想到一个一个节点来比较值,首先这是错误的。

第一:AB两个链表的长度不一定相同,不能相比。

第二:比较节点中的值有一定的特殊情况,我们要比的时节点的地址。

常规解法:

先分别算出A、B两个链表的长度lenA,lenB,先让长的链表的头指针走|lenA - lenB|,然后再一起走,以longlist != shortlist为循环的终止条件

struct ListNode *getIntersectionNode(struct ListNode *headA, struct ListNode *headB) 
{   
    int lenA = 0;
    int lenB = 0;
    struct ListNode *cur1 = headA;
    struct ListNode *cur2 = headB;
    while(cur1->next)
    {
        lenA++;
        cur1 = cur1->next;
    }
    while(cur2->next)
    {
        lenB++;
        cur2 = cur2->next;
    }
    int Difference = abs(lenA - lenB);   
 
    struct ListNode *longlist = headA;
    struct ListNode *shortlist = headB;
    if(lenA < lenB)
    {
        longlist = headB;
        shortlist = headA;
    }

    while(Difference--)
        longlist = longlist->next;
    while(longlist && shortlist)
    {
        if(longlist == shortlist)
            return longlist;
        longlist = longlist->next;
        shortlist = shortlist->next;
    }
    return NULL; 
}

大神解法:

让A链表从头遍历,当pA为空时,pA = headB;B链表从头遍历,当pB为空时,pB = headA。让每个链表都走完两个链表的路程,最后它们一定会在相交节点处相遇

 

struct ListNode *getIntersectionNode(struct ListNode *headA, struct ListNode *headB)
{
    
    if(headA == NULL || headB ==NULL) 
        return NULL;
    struct ListNode *pA = headA;
    struct ListNode *pB = headB;
    while(pA != pB)
    {
        pA = pA == NULL?headB:pA->next;
        pB = pB == NULL?headA:pB->next;
    }
    return pA;
}

本期博客到这里就结束了,如果有什么错误,欢迎指出,如果对你有帮助,请点个赞,谢谢!

相关推荐

  1. leetcode-相交

    2024-04-27 17:36:04       57 阅读
  2. LeetCode206相交

    2024-04-27 17:36:04       54 阅读
  3. 相交的判断(leetcode

    2024-04-27 17:36:04       30 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-27 17:36:04       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-27 17:36:04       101 阅读
  3. 在Django里面运行非项目文件

    2024-04-27 17:36:04       82 阅读
  4. Python语言-面向对象

    2024-04-27 17:36:04       91 阅读

热门阅读

  1. nacos外接mysql的docker部署方式

    2024-04-27 17:36:04       22 阅读
  2. 07_c/c++开源库protobuf序列化

    2024-04-27 17:36:04       38 阅读
  3. 408数据结构专项2011

    2024-04-27 17:36:04       32 阅读
  4. 嵌入式股票行情图片

    2024-04-27 17:36:04       28 阅读
  5. Windows如何安装spark

    2024-04-27 17:36:04       38 阅读
  6. TypeScript 学习笔记

    2024-04-27 17:36:04       29 阅读
  7. vue3组件 描点定位以及监听滚动切换对应activeTab

    2024-04-27 17:36:04       28 阅读
  8. 使用讯飞语音识别----前后端如何交互?

    2024-04-27 17:36:04       39 阅读
  9. 网站推广爬虫

    2024-04-27 17:36:04       28 阅读