快慢指针判断链表中是否存在循环

发布时间 2023-04-24 11:28:49作者: 策码奔腾

给链表设置快慢两个指针,每次移动时,快指针的速度是慢指针的一倍。即每次快指针移动两次,慢指针移动一次。

如果存在循环,快指针跑两圈就可以追上慢指针。

 

为什么不让慢指针停在原地等呢?

因为循环有可能出现在中间位置。如此一来,循环过的位置就不必从头再循环。

 

整个过程的所有位置快指针两遍,慢指针一遍,即三遍循环。因此,时间复杂度为(On)