码迷,mamicode.com
首页 > 其他好文 > 详细

Intersection of Two Linked Lists找2个链表的交合点

时间:2015-05-19 12:47:25      阅读:147      评论:0      收藏:0      [点我收藏+]

标签:

给你2个链表,需要找到这2个链表的重合点的起点,从起点之后所有的点都一样了。这里题目要求时间

复杂度o(n),空间复杂度o(1),就说明不需要额外的空间,只需要遍历就能做出来,关键是思路的问题。

然后就以这个o(n)和o(1)为前提进行思考,首先想到的就是长度,重叠之后的元素都一样了,遍历到

最后一个肯定是一样的,否则就不重叠。然后是怎么找这个重叠的点,然后也好像只能从长度下手了,

因为后面的长度都一样,那前面的长度的差距就是总长度的差距,然后就有了思路了。

ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) {
if(headA == NULL || headB == NULL)return NULL;
ListNode *headA_t = headA;
ListNode *headB_t = headB;
int lenA = 0;
int lenB = 0;
while(headA_t != NULL)
{
headA_t = headA_t->next;
lenA++;
}
while(headB_t != NULL)
{
headB_t = headB_t->next;
lenB++;
}
if(headA_t != headB_t)
{
return NULL;
}
if(lenA <= lenB)
{
while(lenA < lenB)
{
headB = headB->next;
lenA++;
}
}else
{
while(lenB < lenA)
{
headA = headA->next;
lenB++;
}
}
while(headA != headB)
{
headA = headA->next;
headB = headB->next;
}
return headA;
}

唉,老写算法没意思,过几天写个渗透的文章,看看有没有有趣点的网站可以弄弄。

2015/5/9   by  梅开二度

Intersection of Two Linked Lists找2个链表的交合点

标签:

原文地址:http://www.cnblogs.com/meikaierdu/p/4514197.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!