CC150上面讲解的很清楚
一快一慢赛跑的两个指针,一个每次移动两步,一个每次移动一步。假如他们相遇,那么一定存在环。怎样检测环所在位置 看Linked List Cycle2
while里面的判断条件不只是fast不是null,也要判断fast.next不是null,因为fast每次要移动两个
public class Solution {
public boolean hasCycle(ListNode head) {
ListNode fast = head;
ListNode slow = head;
while ( fast != null && fast.next!=null ){
fast = fast.next.next;
slow = slow.next;
if ( fast == slow)
return true;
}
return false;
}
}