1.解题思路
首先分析,如果两个链表的长度不一,假设他们有交点,那么他们的最后一定是相同的,也即是后面为相同的部分,但前面不好说,而又因为长度不一又没法简便的一一对比,因此可以先求出两个链表的长度,并将长链表先往后走两个链表的差值,走后就可一一对应了.
2.代码实现
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; }
结尾:今天的分享到此结束,喜欢的朋友如果感觉有帮助可以点赞三连支持,咱们共同进步!