环形链表很曼妙的一个做题思路

首先设置一个fast一个slow,每次fast移动2个next,slow每次一个

假设head到循环节点是a,循环长度是b+c,在b点slow和fast相遇

相遇这个时候有fast走过=2slow走过,2(a+b)=a+k(b+c)+b

平移得到a-c=(k-1)(b+c)

他们必然会在循环中碰到,碰到之后,slow和head每次加一,slow再运动c就到了循环的头头,这个时候head在a-c点再往后移动的同时slow也会循环一个一个的圈数,这个时候就会在循环的头头相遇,所以返回slow就可以,如果slow和fast永远不相碰就会是返回一个none

相关推荐
benchmark_cc36 分钟前
批量获取股票数据后,如何统一转换成 DataFrame?从数据结构到量化研究的完整实践
数据结构·python·数据分析·量化交易·股票数据·quantdash
啵啵啵鱼1 小时前
第三章 栈、队列和数组相关结构
java·数据结构·栈·队列
xys_6781 小时前
深挖数据结构:线性表(1)
数据结构
mmmmath_311 小时前
LeetCode.104.二叉树的最大深度
数据结构·leetcode
信奥卷王18 小时前
[GESP202509 六级] 划分字符串(含视频)
数据结构·算法
m0_7520356318 小时前
Redis 数据结构总结
数据结构·数据库·redis
tachibana218 小时前
Go 语言的 Map 是否是并发安全的?
开发语言·数据结构·后端·golang·go·语言
Logic10119 小时前
C语言/数据结构字符串题解:统计“chhc“子串权值总和——一次遍历模式匹配
c语言·数据结构·算法·字符串·时间复杂度·空间复杂度·ascii
我命由我1234519 小时前
LRU 缓存淘汰策略
数据结构·redis·学习·mysql·算法·缓存·学习方法
垆边人似月.20 小时前
华为题:合并区间
数据结构·c++·算法