我是靠谱客的博主 激情八宝粥,这篇文章主要介绍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||编写一个程序,找到两个单链表相交内容请搜索靠谱客的其他文章。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部