我是靠谱客的博主 激情八宝粥,最近开发中收集的这篇文章主要介绍LeetCode||编写一个程序,找到两个单链表相交的起始节点。,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

编写一个程序,找到两个单链表相交的起始节点。
在这里插入图片描述
思路:给两个指针curA和curB同时从两个链表的起始位置开始比较,如果cur1和cur2两个字节的地址相同,则为交点,否则两个指针同时往下移动

b-a的节点个数 让长的先走b-a次 然后同时走.

class Solution {
public:
    ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) {
        //如果有一个为空则不相交
        if(nullptr == headA || nullptr == headB)
        return nullptr;
        ListNode* curA = headA;
        int countA = 1;//计数
        while(curA->next)
        {
            countA++;
            curA = curA->next;
        }
        ListNode* curB = headB;
        int countB = 1;
        while(curB->next)
        {
            countB++;
            curB=curB->next;
        }
        //如果最后一个节点地址不相同,则不可能相交
        if(curA != curB)
        return nullptr;
        curA = headA;
        curB = headB;
        int gap = countA-countB;
        if(gap>0)
        {
            while(gap--)
            curA = curA->next;
        }
        else
        {
            while(gap++)
            curB = curB->next;
        }
        //从相同位置开始寻找
        while(curA !=curB)
        {
            curA = curA->next;
            curB = curB->next;
        }
        return curA;
    }      
};

最后

以上就是激情八宝粥为你收集整理的LeetCode||编写一个程序,找到两个单链表相交的起始节点。的全部内容,希望文章能够帮你解决LeetCode||编写一个程序,找到两个单链表相交的起始节点。所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(31)

评论列表共有 0 条评论

立即
投稿
返回
顶部