一、基本思路
- 定义两个快慢指针,快指针每次走两步,慢指针每次走一步
- 当快指针为nullptr时,说明没有环的存在;当快指针追上慢指针时(相等),存在环。
- 定义第三个指针res指向链表的第一个结点,接下来与慢指针同时移动。
- 当res指针与慢指针相等时,得到环的入口。
二、理论证明
设环外长度为n,环的长度为m,且m>n;当快指针和慢指针在环内移动x步后相遇。上述给出的数满足以下等式,
即,
那么,