这道题很精巧,题目要求是O(1)的空间复杂度,所以不能用HashSet,只能用快慢指针。我们定义如下两个指针: fast: 快指针,每次向后移动两个节点 slow: 慢指针,每次向后移动一个节点  按照我们的定义,快指针的速度是慢指针的2倍,那么无论什么时候,快指针经过的节点数nf一定是慢指针经过的节点数ns的2倍,即等式nf = 2*ns一直成立。  如果链表中存在环,那么由于两个节点的速度不一样,这两个指针一定会相遇。当两个指针第一次相遇时,慢指针一定在环内,而快指针肯定已经绕环转了n圈,重新到了慢指针的位置,具体绕了多少...