题目连接
刚开始只想到了哈希表 看了题解才想到快慢指针
快指针每次走2 慢指针每次走1 如果存在环 则一定会相遇
至于快指针为什么是走2 而不是3,4,5…因为正常遍历是O(n)
快指针的遍历是O(kn) k得2时复杂度最低
public boolean hasCycle1(ListNode head) {
if (head == null || head.next == null) return false;
ListNode fast = head.next;
ListNode slow = head;
while (slow != fast){
if (fast == null || fast.next == null) return false;
fast = fast.next.next;
slow = slow.next;
}
return true;
}