1. 题目2. 读题(需要重点注意的东西)3. 解法4. 可能有帮助的前置习题5. 所用到的数据结构与算法思想6. 总结
1. 题目
思路(快慢指针):
定义快慢指针,快指针每次走两步,慢指针每次走一步;
如果快指针走到了链表的结尾(null)都没有相遇,则无环;
如果快慢指针在链表的除了头结点的地方相遇了,则证明有环。
3. 解法---------------------------------------------------解法---------------------------------------------------:
public class Solution {
public boolean hasCycle(ListNode head) {
if(head == null || head.next == null) return false;
ListNode fast = head;
ListNode slow = head;
while(fast.next != null && fast.next.next != null){
fast = fast.next.next;
slow = slow.next;
if(fast == slow) return true;
}
return false;
}
}
可能存在的问题:
4. 可能有帮助的前置习题[LeetCode]287. 寻找重复数(java实现) 5. 所用到的数据结构与算法思想
Java常见算法—弗洛伊德算法(环的相关判断) 6. 总结


![[LeetCode]141. 环形链表(java实现)快慢指针判断环 [LeetCode]141. 环形链表(java实现)快慢指针判断环](http://www.mshxw.com/aiimages/31/776588.png)
