给链表设置快慢两个指针,每次移动时,快指针的速度是慢指针的一倍。即每次快指针移动两次,慢指针移动一次。
如果存在循环,快指针跑两圈就可以追上慢指针。
为什么不让慢指针停在原地等呢?
因为循环有可能出现在中间位置。如此一来,循环过的位置就不必从头再循环。
整个过程的所有位置快指针两遍,慢指针一遍,即三遍循环。因此,时间复杂度为(On)
标签:快慢,位置,链表,循环,移动,指针 From: https://www.cnblogs.com/uip001/p/17348914.html
给链表设置快慢两个指针,每次移动时,快指针的速度是慢指针的一倍。即每次快指针移动两次,慢指针移动一次。
如果存在循环,快指针跑两圈就可以追上慢指针。
为什么不让慢指针停在原地等呢?
因为循环有可能出现在中间位置。如此一来,循环过的位置就不必从头再循环。
整个过程的所有位置快指针两遍,慢指针一遍,即三遍循环。因此,时间复杂度为(On)
标签:快慢,位置,链表,循环,移动,指针 From: https://www.cnblogs.com/uip001/p/17348914.html