目录
链表相交
具体思路:
- 如果链表相交,那么后续的长度肯定是一样的,所以直接从后续长度一样的地方开始判断两个链表是否相等
class Solution {
public:
ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) {
ListNode* dummyA=new ListNode(-1);
ListNode* dummyB=new ListNode(-1);
dummyA->next=headA;
ListNode* traversalA=dummyA;
dummyB->next=headB;
ListNode* traversalB=dummyB;
int lenA=0;
int lenB=0;
while(traversalA->next!=nullptr)
{
lenA++;
traversalA=traversalA->next;
}
while(traversalB->next!=nullptr)
{
lenB++;
traversalB=traversalB->next;
}
if(lenA>lenB)
{
}
else
{
swap(dummyA,dummyB);
swap(lenA,lenB);
}
traversalA=dummyA;
traversalB=dummyB;
for(int i=0;i<lenA-lenB;i++)
{
traversalA=traversalA->next;
}
while(traversalA!=nullptr)
{
if(traversalA==traversalB)
{
return traversalA;
}
traversalB=traversalB->next;
traversalA=traversalA->next;
}
return nullptr;
}
};
标签:ListNode,dummyB,next,链表,traversalA,traversalB
From: https://www.cnblogs.com/liviayu/p/17971807