思路是设两个指针,快指针每次走两步,慢指针每次走一步,如果两个指针相遇则有环,否则快指针的next域为null退出。
public boolean hasCycle(ListNode head) {
ListNode fast=head,slow=head;
while(fast!=null) {
if(fast.next==null)
return false;
fast=fast.next.next;
slow=slow.next;
if(fast==slow)
return true;
}
return false;
}