在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,预期输出是没有相交,但我的代码是有相交结果的,这个地方是在搞不懂,希望有高手看到能给予解答