用java代码写一个使用快慢指针判断链表是否有环的demo
时间: 2024-03-02 13:48:30 浏览: 97
快慢指针证明带环单链表
好的,下面是使用快慢指针判断链表是否有环的 Java 代码示例:
```java
public class ListNode {
int val;
ListNode next;
ListNode(int x) {
val = x;
next = null;
}
}
public class Solution {
public boolean hasCycle(ListNode head) {
if (head == null || head.next == null) {
return false;
}
ListNode slow = head;
ListNode fast = head.next;
while (slow != fast) {
if (fast == null || fast.next == null) {
return false;
}
slow = slow.next;
fast = fast.next.next;
}
return true;
}
}
```
其中,ListNode 是定义链表节点的类,Solution 类中的 hasCycle 方法就是判断链表是否有环的实现方法。在方法中,使用了两个指针 slow 和 fast,分别指向链表的头节点和头节点的下一个节点。然后,不断地让这两个指针向前移动,如果链表存在环,那么 fast 指针一定会在某个时刻追上 slow 指针,此时就可以判断链表存在环;如果链表不存在环,那么 fast 指针会先到达链表结尾,此时就可以判断链表不存在环。
阅读全文