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

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

相关推荐
m0_547486662 天前
《数据结构教程》全套 PPT课件2026
数据结构
tryxr3 天前
矩阵的几种基础变换
java·数据结构·算法·矩阵
mmmmath_33 天前
LeetCode.028.找出字符串中第一个匹配项的
数据结构·算法·leetcode
All for pursuit.3 天前
【栈-4】739.每日温度
数据结构·c++·算法·leetcode
All for pursuit.3 天前
【栈-5】84.柱状图中最大的矩形
数据结构·c++·算法·leetcode
渡我白衣3 天前
HttpRequest与HttpResponse的实现
服务器·数据结构·c++·人工智能·tcp/ip·机器学习·caffe
晴天的雨.9923 天前
【C++算法】和为s的两个数
开发语言·数据结构·c++·算法
无敌贵点大王3 天前
RTThread学习记录11——RT-Thread 设备模型吃透:UART/ADC/PWM/PIN 到底有什么区别?
c语言·stm32·学习·链表
淡海水3 天前
13-04-面试-源码级深度追问链
数据结构·unity·面试·c#·游戏引擎·源码·il2cpp
Logic1013 天前
C语言/数据结构位运算题解:异或XOR找出时尚聚会中的“独特颜色“——只出现一次的数字
c语言·数据结构·数组·位运算·时间复杂度·算法题·异或性质