java 给定一个链表,判断链表中是否有环。
时间: 2023-07-17 14:01:32 浏览: 48
要判断一个链表中是否有环,可以使用快慢指针的方法。
快指针每次向前移动两个节点,慢指针每次向前移动一个节点。如果链表中有环,那么快指针最终会追上慢指针,即它们会指向同一个节点。如果链表中没有环,那么快指针最终会到达链表的末尾。
以下是一个使用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;
}
}
```
在上面的代码中,我们使用两个指针`slow`和`fast`来遍历链表。如果链表中有环,那么`fast`指针一定会追上`slow`指针;如果链表中没有环,那么`fast`指针会到达链表的末尾。