LeetCode链接:https://leetcode-cn.com/problems/linked-list-cycle/
设想一个环形跑道,两个人都向同一个方向跑,一个跑得慢,一个跑得快
跑上一段时间,跑得快的肯定会追上跑得慢的
快慢指针问题,可自行百度

思路:
1.链表判空
2.设置两个指针slow和fast,均从head开始
3.只要fast本身不是空,或者fast下一跳不为空,则slow向后移动一位,fast向后移动两位
4.移动过程中,如果出现slow和fast指向同一节点,则判别有环
5.如果循环正常结束,则代表slow和fast没有相遇,则无环
public class Solution {
public boolean hasCycle(ListNode head) {
//1.
if (head == null || head.next == null)
return false;
//2.
ListNode fast = head;
ListNode slow = head;
//3.
while (fast != null && fast.next != null) {
slow = slow.next;
fast = fast.next.next;
//4.
if (slow == fast)
return true;
}
//5.
return false;
}
}
本文介绍了一种使用快慢指针的方法来判断链表中是否存在环。通过设置两个指针,一个每次移动一步,另一个每次移动两步,若两者相遇则说明链表存在环。文章给出了详细的实现步骤和Java代码示例。
&spm=1001.2101.3001.5002&articleId=88938315&d=1&t=3&u=1e1c18793d044e11b80d45e81aae2e6f)
1725

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



