目录
1.解题思路
首先分析,如果两个链表的长度不一,假设他们有交点,那么他们的最后一定是相同的,也即是后面为相同的部分,但前面不好说,而又因为长度不一又没法简便的一一对比,因此可以先求出两个链表的长度,并将长链表先往后走两个链表的差值,走后就可一一对应了.
2.代码实现
cpp
struct ListNode *getIntersectionNode(struct ListNode *headA, struct ListNode *headB)
{ struct ListNode *pA=headA;
struct ListNode *pB=headB;
int numA=0;
int numB=0;
while(pA)
{
numA++;
pA=pA->next;
}
while(pB)
{
numB++;
pB=pB->next;
}
int tmp=abs(numA-numB);
struct ListNode *fast=headA;
struct ListNode *slow=headB;
if(numA<numB)
{
fast=headB;
slow=headA;
}
while(tmp--)
{
fast=fast->next;
}
while(fast)
{
if(fast==slow)
return fast;
fast=fast->next;
slow=slow->next;
}
return NULL;
}
结尾:今天的分享到此结束,喜欢的朋友如果感觉有帮助可以点赞三连支持,咱们共同进步!