题目

给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。

解答

这道题真的很巧妙,首先我们有了环形链表1这道题的铺垫,就能方便的判断有无环了,但是题目要求我们找到环形链表的入口处,所以需要找个方法:



如图,X、Y、Z分别是起点、入口处、相遇处,我们通过红色框起来的式子可以发现如果有一个从X处出发走了a,有一个从Z出发走了c,最后由于相差(b+c)就是环的长度,所以刚好能在Y处相遇,即得到了入口处。

代码如下:

/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
ListNode *detectCycle(ListNode *head) {
ListNode *pSlow=head,*pFast=head;
while(pFast && pFast->next)
{
pSlow=pSlow->next;
pFast=pFast->next->next;
if(pSlow==pFast)
break;
}
if(!pFast || !pFast->next)
return NULL;
pSlow=head;
while(pSlow!=pFast)
{
pSlow=pSlow->next;
pFast=pFast->next;
} return pFast;
}
};

最新文章

  1. Func与Action
  2. load()方法---------jQuery动态加载html
  3. 使用Python将HTML转成PDF
  4. Arcgis9.3下栅格数据的坐标转换出错
  5. javascript MD5加密
  6. Extjs4.0.7 实现Grid的嵌套
  7. sublime text3 用法
  8. Lua C Api lua_gettable 、lua_settable 、lua_next 使用详解
  9. 如何使用ILAsm与ILDasm修改.Net exe(dll)文件
  10. MySQL数据查询之多表查询
  11. 小程序webview应用实践
  12. [No0000F6]C# 继承
  13. 【转】大型Vuex项目 ,使用module后, 如何调用其他模块的 属性值和方法
  14. 日常训练赛 Problem C – Complete Naebbirac’s sequence
  15. 如何新建Quartus工程—FPGA入门教程【钛白Logic】
  16. MongoDB(课时17 更新函数)
  17. SQL2008R2 express版本不支持维护计划
  18. html , body , margin , overflow 之大乱战
  19. hdu 2112 HDU Today (floyd算法)
  20. C++ vector类型要点总结

热门文章

  1. python二进制数据
  2. codeforces 659G G. Fence Divercity(dp)
  3. leetcode 66. Plus One(高精度加法)
  4. HihoCoder1653 : 公平分队([Offer收割]编程练习赛39)(贪心)
  5. ACM学习历程——HDU1331 Function Run Fun(锻炼多维dp的打表)
  6. MongoDB4.0.0的安装配置—windows
  7. The Django Book 2.0--中文版
  8. HDU3991:Black and White
  9. 【240】◀▶IEW-Unit05
  10. Linux rpm 命令参数使用…