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

Leetcode#160 Intersection of Two Linked Lists

时间:2015-02-02 19:42:17      阅读:165      评论:0      收藏:0      [点我收藏+]

标签:

原题地址

 

先将A链末尾和B链头部接起来

然后判断是否有环,如果无环,说明肯定不想交,如果有环,那么相交的位置就是环开始的位置

 

第一遍做的时候没遇到什么问题,第二遍做的时候各种出错,后来发现原来在用快慢指针法的时候快慢指针要从起点开始,否则计算出来的第一个相交位置不是环开始的位置。。

 

代码:

 1 ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) {
 2         if (!headA || !headB)
 3             return NULL;
 4             
 5         ListNode *h = headA;
 6         while (h->next)
 7             h = h->next;
 8         h->next = headB;
 9         
10         ListNode *fast = headA;
11         ListNode *slow = headA;
12         bool running = false;
13         ListNode *res = NULL;
14         
15         while ((!running || fast != slow) && fast && fast->next) {
16             running = true;
17             fast = fast->next->next;
18             slow = slow->next;
19         }
20         if (fast == slow) {
21             res = headA;
22             while (res != slow) {
23                 res = res->next;
24                 slow = slow->next;
25             }
26         }
27         h->next = NULL;
28         
29         return res;
30 }

 

Leetcode#160 Intersection of Two Linked Lists

标签:

原文地址:http://www.cnblogs.com/boring09/p/4268435.html

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