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

首先设置一个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

相关推荐
凯瑟琳.奥古斯特42 分钟前
图论核心考点精讲
开发语言·数据结构·算法·排序算法·哈希算法
m0_629494731 小时前
LeetCode 热题 100-----13.最大子数组和
数据结构·算法·leetcode
田梓燊1 小时前
力扣:94.二叉树的中序遍历
数据结构·算法·leetcode
khalil10201 小时前
代码随想录算法训练营Day-38动态规划06 | 322. 零钱兑换、279.完全平方数、139.单词拆分、多重背包、总结
数据结构·c++·算法·leetcode·动态规划
自我意识的多元宇宙1 小时前
数据结构----希尔排序
数据结构·算法·排序算法
y = xⁿ1 小时前
Redis八股学习日记:数据结构;跳表的底层;Reids的事务机制
数据结构·redis·学习
我不是懒洋洋2 小时前
【数据结构】二叉树OJ(单值二叉树、检查两棵树是否相同、对称二叉树、二叉树的前序遍历、另一颗树的子树)
c语言·数据结构·c++·经验分享·算法·leetcode·visual studio
地球资源数据云2 小时前
2015年中国30米分辨率沼泽湿地空间分布数据集
大数据·数据结构·数据库·人工智能·机器学习
Rabitebla3 小时前
【C++】string 类:原理、踩坑与对象语义
linux·c语言·数据结构·c++·算法·github·学习方法
Old Uncle Tom11 小时前
OpenClaw 记忆系统 -- 记忆预加载
java·数据结构·算法·agent