leetcode160 指针相等未正常退出循环
include<iostream>
struct ListNode
{
int val;
ListNode *next;
ListNode(int x) : val(x), next(NULL) {}
};
class Solution
{
public:
ListNode *getIntersectionNode(ListNode *headA, ListNode *headB)
{
if (!headA || !headB) return NULL;
ListNode *curA = headA;
ListNode *curB = headB;
//如下测试案例,curA应该在指向相交点2时直接返回。但实际测试是到空指针才返回。
while (curA != curB)
{
curA = curA ? curA->next : headB;
curB = curB ? curB->next : headA;
}
return curA;
}
};
int main()
{
ListNode *headL = new ListNode(3);
ListNode *heada = new ListNode(2);
ListNode *headb = new ListNode(4);
headL->next = heada;
heada->next = headb;
ListNode *ptrA = headL;
ListNode *headR = new ListNode(0);
ListNode *head1 = new ListNode(9);
ListNode *head2 = new ListNode(1);
ListNode *head3 = new ListNode(2);
ListNode *head4 = new ListNode(4);
headR->next = head1;
head1->next = head2;
head2->next = head3;
head3->next = head4;
ListNode *ptrB = headR;
Solution s;
ListNode *result = s.getIntersectionNode(ptrA, ptrB);
if (!result)
{
std::cout << "The intersection Node is: " << result->val << std::endl;
}
while (!headL)
{
ListNode *cur = headL->next;
delete headL;
headL = cur;
}
while (!headR)
{
ListNode *cur = headR->next;
delete headR;
headR = cur;
}
return 0;
}
解决方案在leetcode内能通过。自己在vs写测试案例测试时。发现解决方案的getIntersectionNode函数未正常在案例相交点返回。而是返回空指针。请大神帮忙解惑。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
这个问题空看出来leetcode的测试案例其实还是真挺靠谱的。会返回空没问题,按照题目意思你这两个链表就是无相交。
看一下这两个Node,你都是new的,这题的结束循环条件是两个Node对象相同,而不是Node的val相同,你这个是不同的对象,当然没法提前结束loop,那肯定是走到空才结束。