https://leetcode.cn/problems/intersection-of-two-linked-lists/description/
likou写题的时候发现有个地方我不明白,
为什么这样写while循环里面的不对呀,给我报错,时间超时,我不太清楚
我理解的A指针检测下一个指向空形成循环链表,但是答案是检测当前指针指向空再形成循环链表,我想这不是一样吗?
以及这种情况咋结出来的,两个不相交的情况下,不会陷入死循环吗?
求解
while(A!=B) {
if(A->next==NULL) {
A->next=headB;
}
if(B->next==NULL) {
B->next=headA;
}
A=A->next;
B=B->next;
}
下面是对的代码
struct ListNode *getIntersectionNode(struct ListNode *headA, struct ListNode *headB) {
//特殊情况优先考虑
if(headA==NULL || headB==NULL) {
return NULL;
}
struct ListNode* A=headA;
struct ListNode* B=headB;
while(A!=B) {
if(A==NULL) {
A=headB;
} else{
A=A->next;
}
if(B==NULL) {
B=headA;
} else {
B=B->next;
}
}
return A;
}