是指针相同不是值相同!!
先分别计算两个链表的长度,然后将长的那条设置为A,计算出他们的长度差,使链表A的指针移动到跟链表B一样长度的节点上,然后遍历链表A和B,如果有一个指针相同就返回值
class Solution {
public:
ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) {
ListNode* curA=headA;
ListNode* curB=headB;
int lenA=0,lenB=0;
while(curA!=NULL)
{
lenA++;
curA=curA->next;
}
while(curB!=NULL)
{
lenB++;
curB=curB->next;
}
curA=headA;
curB=headB;
if(lenB>lenA)
{
swap(curA,curB);
swap(lenA,lenB);
}
int gap=lenA-lenB;
while(gap--)
{curA=curA->next;}
while(curA!=NULL)
{
if(curA==curB)
{return curA;}
curA=curA->next;
curB=curB->next;
}
return NULL;
}
};