160. 相交链表

ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) {

        int a = 0;

        ListNode* pa = headA;

        while(pa)

        {

            a++;

            pa = pa->next;

        }

        int b = 0;

        ListNode* pb = headB;

        while(pb)

        {

            b++;

            pb = pb->next;

        }

        if(a > b)

        {

            int n = a - b;

            while(n && headA)

            {

                n--;

                headA = headA->next;

            }

        }

        else if(a < b)

        {

            int n = b - a;

            while(n && headB)

            {

                n--;

                headB = headB->next;

            }

        }       

        while(headA && headB){

            if (headA == headB){

                return headA;

            }

            headA = headA->next;

            headB = headB->next;

        }

        return NULL;

    }

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 160. 相交链表 编写一个程序,找到两个单链表相交的起始节点。 示例 1: 输入:intersectVal = ...
    TheKey_阅读 2,166评论 0 1
  • 在C语言中,五种基本数据类型存储空间长度的排列顺序是: A)char B)char=int<=float C)ch...
    夏天再来阅读 9,067评论 0 2
  • 题目描述: 编写一个程序,找到两个单链表相交的起始节点。 如下面的两个链表: 在节点 c1 开始相交。 示例 1:...
    _溯光阅读 2,312评论 0 0
  • 1.题目描述 编写一个程序,找到两个单链表相交的起始节点。 如下面的两个链表:在节点 c1 开始相交。 示例 1:...
    Jayce_xi阅读 3,950评论 0 0
  • 编写一个程序,找到两个单链表相交的起始节点。 最优解: 第一次遍历是为了把链表节点差跳过去,如果存在相交节点,则 ...
    不胖二十斤不改名zz阅读 1,630评论 0 0

友情链接更多精彩内容