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

链表中环的入口结点

时间:2016-03-28 16:58:21      阅读:272      评论:0      收藏:0      [点我收藏+]

标签:

具体分析可见http://blog.csdn.net/libin1105/article/details/48267113

需要指出的是,上述博客中2*(a+b)=a+b+c+b应该改为2*(a+b)=a+b+(c+b)*n,其中n为自然数。

然后得到关系式a=(b+c)*n-b

由此可见两个指针会相遇在环的入口。

技术分享
 1 class Solution {
 2 public:
 3     ListNode* EntryNodeOfLoop(ListNode* pHead)
 4     {
 5         if(pHead==NULL||pHead->next==NULL)
 6             return NULL;
 7         ListNode* one=pHead;
 8         ListNode* two=pHead;
 9         do{
10             two=two->next;
11             two=two->next;
12             one=one->next;
13         }while(one!=two);
14         ListNode* newone=pHead;
15         while(two!=newone)
16         {
17             newone=newone->next;
18             two=two->next;
19         }
20         return two;
21     }
22 };
View Code

 

链表中环的入口结点

标签:

原文地址:http://www.cnblogs.com/vaecn/p/5329517.html

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