题目:
分析:
因为要求空间复杂度为O(1),所以(未掌握的)HashMap和遍历数组肯定没办法使用。要求时间复杂度为O(N),所以只能遍历一遍得到结果。
设置快慢两个指针,快指针一次走两个节点,慢指针一次走一个节点,可以认为快指针速度是慢指针的两倍,所以当慢指针最终走到终点的时候,快指针必定会追上慢指针,一次遍历就可得到结果。注意:慢指针迭代和快指针迭代时的语句
public class Solution {
public boolean hasCycle(ListNode head) {
ListNode fast = head;
ListNode low = head;
while(fast!=null&&fast.next!=null){
low = low.next;
fast = fast.next.next;
if(fast == low) return true;
}
return false;
}
}