一:题目
二:思路讲解
1:采用快慢指针的方法,一个fast指针一次移动两个节点,一个slow指针一次移动一个节点。
2:两个指针从头指针开始往后遍历,如果fast指针或者fast->next 有一个为空,那就代表这不是带环链表。
以上是fast指针为空,代表这是一个偶数个节点的链表,fast1,3,5这样的移动,最后一次会到尾节点的下一个节点,所以fast为空。
以上是 fast->next指针为空,代表这是一个奇数个节点的链表,fast1,3,5这样的移动,最后一次会到尾节点,所以它的next为空。
以上这两种情况都代表这个链表不带环
3:当slow和fast遍历的时候,如果fast和slow相等,就代表该链表带环,步骤如下所示:
a:初识状态
b:开始移动
c:继续移动
d:两者相等
相等只会出现在环内的节点,二者会相遇,即slow=fast。
代码展示 :