// fast指针一定先进入环中,如果fast 指针和slow指针相遇的话,一定是在环中相遇
// 可以画一个环,然后让 fast指针在任意一个节点开始追赶slow指针
// fast和slow各自再走一步, fast和slow就相遇了
// 因为fast是走两步,slow是走一步,其实相对于slow来说,fast是一个节点一个节点的靠近slow的,
// 所以fast一定可以和slow重合
public class Solution {
public boolean hasCycle(ListNode head) {
ListNode fast = head,slow = head;
while(fast != null && fast.next != null){
fast = fast.next.next;
slow = slow.next;
if(fast == slow){
reeturn true;
}
}
return false;
}
}
偷个图

2450

被折叠的 条评论
为什么被折叠?



