
对于单链表来说,指针最后指向null,就说明该链表中没有环,但是如果链表中存在环,那么指针永远不会指向null,成了死循环。这时我们使用快慢指针来解决问题,快慢指针都是从head开始,fast = fast.next.next,slow = slow.next,快指针比慢指针快一倍,如果没有环,fast会先到null;如果有环,fast最终会超slow一圈和慢指针相遇。
boolean hasCycle(ListNode head){ListNode fast, slow;fast = slow = head;//链表是奇数和偶数对fast的判定条件不同while(fast!=null && fast.next!=null){fast = fast.next.next;slow = slow.next;if(fast == slow) return true;}return false;}
