题目链接
解题思路
双指针法
- 设置快慢指针
fast和slow,初始时都为head节点 - 快指针一次走两步,慢指针一次走一步
- 那么加入有环,快指针一定先进入环里循环,慢指针也终将会进入环里面
- 因为快指针一次走两步,慢指针一次走一步,所以在环里两个指针终究会相遇,也就是快指针会追上慢指针
- 具体动图可以看下图

AC代码
public class Solution {
public boolean hasCycle(ListNode head) {
ListNode fast = head;
ListNode slow = head;
while(fast !=null && fast.next != null){
slow = slow.next;
fast = fast.next.next;
if(slow == fast){
return true;
}
}
return false;
}
}
本文介绍了一种使用快慢指针法来判断链表中是否存在环的有效算法。通过一个快指针每次移动两个节点,慢指针每次移动一个节点的方式,如果链表中有环,则快指针最终一定会追上慢指针。
142

被折叠的 条评论
为什么被折叠?



