栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

【力扣】相交链表

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【力扣】相交链表

160. 相交链表 - 力扣(LeetCode)

题目:

给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。

思路:

求出A、B两个链表的表长len1、len2,分别用两个指针pa、pb,指向两个链表的头结点、让长的那个链表先走|len1-len2|给元素,然后再同时走,两个指针相等的时候就是相交的结点。

代码:

struct ListNode *getIntersectionNode(struct ListNode *headA, struct ListNode *headB) 
{
    int lenA = 0;
    int lenB = 0;
    struct ListNode* pa = headA;
    struct ListNode* pb = headB;
    while(pa)
    {
        lenA++;
        pa=pa->next;
    }
    while(pb)
    {
        lenB++;
        pb=pb->next;
    }
    pa = headA;
    pb = headB;
    int difference = 0;//差值
    if(lenA > lenB)
    {
        difference = lenA - lenB;
        while(difference--)
        {
            pa = pa->next;
        }
        while(pa!=pb && NULL != pa && NULL != pb)
        {
            pa = pa->next;
            pb = pb->next;
        }
        return pa;
    }
    else
    {
        difference = lenB - lenA;
        while(difference--)
        {
            pb = pb->next;
        }
        while(pa!=pb && NULL != pa && NULL != pb)
        {
            pa = pa->next;
            pb = pb->next;
        }
        return pa;
    }
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/983808.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号