单链表OJ题——10.环形链表2
单链表OJ题——10.环形链表2
10.环形链表2142. 环形链表 II - 力扣(LeetCode)代码语言:javascript代码运行次数:0运行复制/*
解题思路:
如果链表存在环,则fast和slow会在环内相遇,定义相遇点到入口点的距离为X,定义环的长度为C,定义头到入口的距离为L,fast在slow进入环之后一圈内追上slow,则会得知:
slow所走的步数为:L + X
fast
单链表OJ题——10.环形链表2
142. 环形链表 II - 力扣(LeetCode)
/*
解题思路:
如果链表存在环,则fast和slow会在环内相遇,定义相遇点到入口点的距离为X,定义环的长度为C,定义头到入口的距离为L,fast在slow进入环之后一圈内追上slow,则会得知:
slow所走的步数为:L + X
fast所走的步数为:L + X + * C
并且fast所走的步数为slow的两倍,故:
2*(L + X) = L + X + * C
即: L = * C - X
所以从相遇点开始slow继续走,让一个指针从头开始走,相遇点即为入口节点
*/
代码语言:javascript代码运行次数:0运行复制typedef struct Listode ode;
struct Listode *detectCycle(struct Listode *head) {
ode* slow = head;
ode* fast = head;
while(fast && fast->next)
{
slow = slow->next;
fast = fast->next->next;
//走到相遇点
if(slow == fast)
{
// 求环的入口点
ode* meet = slow;
ode* start = head;
while(meet != start)
{
meet = meet->next;
start = start->next;
}
return meet;
}
}
return ULL;
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。 原始发表:2024-12-16,如有侵权请联系 cloudcommunity@tencent 删除structtypedef链表指针return #感谢您对电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格的认可,转载请说明来源于"电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格
上传时间: 2025-07-28 09:12:43
下一篇:单链表相关面试题
推荐阅读
留言与评论(共有 17 条评论) |
本站网友 微巴 | 0秒前 发表 |
fast在slow进入环之后一圈内追上slow | |
本站网友 新濠江风云 | 26分钟前 发表 |
则fast和slow会在环内相遇 | |
本站网友 东池便当电话 | 9分钟前 发表 |
定义头到入口的距离为L | |
本站网友 蒋怡图片 | 24分钟前 发表 |
分享自作者个人站点/博客 | |
本站网友 胃食管反流病症状 | 11分钟前 发表 |
如有侵权请联系 cloudcommunity@tencent 删除前往查看structtypedef链表指针return | |
本站网友 武汉博大医院 | 19分钟前 发表 |
L + X fast所走的步数为:L + X + * C 并且fast所走的步数为slow的两倍 | |
本站网友 学步车的危害 | 26分钟前 发表 |
单链表OJ题——10.环形链表2 10.环形链表2142. 环形链表 II - 力扣(LeetCode)代码语言:javascript代码运行次数:0运行复制/* 解题思路: 如果链表存在环 | |
本站网友 菜百黄金价格查询 | 13分钟前 发表 |
分享自作者个人站点/博客 | |
本站网友 大地保险理赔 | 28分钟前 发表 |
如有侵权请联系 cloudcommunity@tencent 删除前往查看structtypedef链表指针return | |
本站网友 保健品减肥 | 21分钟前 发表 |
L + X fast所走的步数为:L + X + * C 并且fast所走的步数为slow的两倍 | |
本站网友 光伏业 | 24分钟前 发表 |
则会得知: slow所走的步数为 | |
本站网友 上海治疗青春痘医院 | 18分钟前 发表 |
则fast和slow会在环内相遇 | |
本站网友 东新路 | 11分钟前 发表 |
L + X fast所走的步数为:L + X + * C 并且fast所走的步数为slow的两倍 | |
本站网友 百日破 | 9分钟前 发表 |
单链表OJ题——10.环形链表2 10.环形链表2142. 环形链表 II - 力扣(LeetCode)代码语言:javascript代码运行次数:0运行复制/* 解题思路: 如果链表存在环 | |
本站网友 企业信用档案 | 19分钟前 发表 |
故: 2*(L + X) = L + X + * C 即: L = * C - X 所以从相遇点开始slow继续走 | |
本站网友 建鲤 | 6分钟前 发表 |
定义头到入口的距离为L |