📅  最后修改于: 2023-12-03 14:54:56.411000             🧑  作者: Mango
给定一个链表,判断该链表是否存在环。
使用快指针和慢指针。
快指针每次走两步,慢指针每次走一步。如果链表中存在环,那么快指针和慢指针一定会在某个时刻相遇。
public boolean hasCycle(ListNode head) {
// 定义快指针和慢指针
ListNode fast = head;
ListNode slow = head;
// 遍历链表,如果存在环,则快指针和慢指针会相遇
while (fast != null && fast.next != null) {
fast = fast.next.next; // 快指针每次走两步
slow = slow.next; // 慢指针每次走一步
if (fast == slow) { // 如果快指针和慢指针相遇,说明链表存在环
return true;
}
}
// 如果快指针和慢指针没有相遇,说明链表不存在环
return false;
}
本文介绍了如何使用快指针和慢指针来判断链表中是否存在环。这是链表问题中比较常见的问题之一,学好了这个问题,可以为解决其他有关链表的问题打下坚实的基础。