您的位置:首页 > 其它

寻找两个相交链表的第一个公共节点的问题

2016-11-06 13:26 323 查看
在leetcode做题时遇到的问题,首先是最后通过的代码

class Solution {

public:

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

        if(headA==NULL||headB==NULL)

            return NULL;

        int count1=0;

        int count2=0;

        ListNode *p1=headA;

        ListNode *p2=headB;

        while(p1!=NULL)

        {

            count1++;

            p1=p1->next;

        }

        while(p2!=NULL)

        {

            count2++;

            p2=p2->next;

        }

        p1=headA;

        p2=headB;

        if(count1>count2)

        {

            int dist=count1-count2;

            while(dist>0)

            {

                p1=p1->next;

                dist--;

            }

        }

        if(count2>count1)

        {

            int dist=count2-count1;

            while(dist>0)

            {

                p2=p2->next;

                dist--;

            }

        }

        while(p1!=NULL&&p2!=NULL&&p1!=p2)

        {

            p1=p1->next;

            p2=p2->next;

        }

        if(p1==p2)

            return p1;

        return NULL;

    }

};

一开始的时候,最后if(p1==p2)这个分支的判断条件我写的是if(p1!=NULL&&p2!=NULL),这种情况下测试用例一直无法通过,报错一直都是输入None,预期输出是没有相交,但我的代码是有相交结果的,这个地方是在搞不懂,希望有高手看到能给予解答
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: