Leetcode:环形链表2
2024-09-04 13:39:44
题目
给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 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;
}
};
最新文章
- Func与Action
- load()方法---------jQuery动态加载html
- 使用Python将HTML转成PDF
- Arcgis9.3下栅格数据的坐标转换出错
- javascript MD5加密
- Extjs4.0.7 实现Grid的嵌套
- sublime text3 用法
- Lua C Api lua_gettable 、lua_settable 、lua_next 使用详解
- 如何使用ILAsm与ILDasm修改.Net exe(dll)文件
- MySQL数据查询之多表查询
- 小程序webview应用实践
- [No0000F6]C# 继承
- 【转】大型Vuex项目 ,使用module后, 如何调用其他模块的 属性值和方法
- 日常训练赛 Problem C – Complete Naebbirac’s sequence
- 如何新建Quartus工程—FPGA入门教程【钛白Logic】
- MongoDB(课时17 更新函数)
- SQL2008R2 express版本不支持维护计划
- html , body , margin , overflow 之大乱战
- hdu 2112 HDU Today (floyd算法)
- C++ vector类型要点总结
热门文章
- python二进制数据
- codeforces 659G G. Fence Divercity(dp)
- leetcode 66. Plus One(高精度加法)
- HihoCoder1653 : 公平分队([Offer收割]编程练习赛39)(贪心)
- ACM学习历程——HDU1331 Function Run Fun(锻炼多维dp的打表)
- MongoDB4.0.0的安装配置—windows
- The Django Book 2.0--中文版
- HDU3991:Black and White
- 【240】◀▶IEW-Unit05
- Linux&;nbsp;rpm&;nbsp;命令参数使用…