题目:
算法思想:这道题有一个关键点就是如果A B链表相交,相交后面的部分是一样的,但是前面不相交的部分长度不同,如果A B链表同时跑,那么到达尾部时间不同,但是跑完之后A跑B链表,B跑A链表,那么本来不相交部分的长度变的相等了,都是A+B。需要注意的是即使链表完全不相交也不要紧,NULL可以看做相交点,就是判断条件不是A->next!=NULL,而是A!=NULL。
代码:
ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) {
ListNode *A = headA;
ListNode *B = headB;
while(A != B)
{
if(A != NULL)
A = A->next;
else
A = headB;
if(B != NULL)
B = B->next;
else
B = headA;
}
return A;
}