LeetCode : 160. Intersection of Two Linked Lists

97人阅读 评论(0)

Write a program to find the node at which the intersection of two singly linked lists begins.

For example, the following two linked lists:

A:          a1 → a2
↘
c1 → c2 → c3
↗
B:     b1 → b2 → b3

begin to intersect at node c1.

Notes:

• If the two linked lists have no intersection at all, return null.
• The linked lists must retain their original structure after the function returns.
• You may assume there are no cycles anywhere in the entire linked structure.
• Your code should preferably run in O(n) time and use only O(1) memory.

AC代码如下：

{
ListNode * res = NULL;
int lengthA = 0;
int lengthB = 0;
ListNode *a,*b;
while(a != NULL)
{
lengthA++;
a = a->next;
}
while(b != NULL)
{
lengthB++;
b = b->next;
}
int diff = abs(lengthA - lengthB);
if(lengthA > lengthB)
{
for(int i = 0;i < diff;i++)
a = a->next;
}
if(lengthA < lengthB)
{
for(int i = 0;i < diff;i++)
b = b->next;
}
while(a!=NULL && b!= NULL)
{
if(a == b)
{
res = a;
break;
}
a = a->next;
b = b->next;
}
return res;

}

0
0

* 以上用户言论只代表其个人观点，不代表CSDN网站的观点或立场
个人资料
• 访问：30866次
• 积分：1367
• 等级：
• 排名：千里之外
• 原创：108篇
• 转载：16篇
• 译文：0篇
• 评论：14条
阅读排行
最新评论