题目
判断链表是否存在环
- 通过快慢指针,快指针每次走两步,慢指针每次走一步,如果没有环,那快指针会先到终点,如果存在环,那么快慢指针一定会相遇
class ListNode {
constructor(value) {
this.value = value;
this.next = null;
}
}
function hasCycle(head) {
let slow = head;
let fast = head;
while (fast !== null && fast.next !== null) {
slow = slow.next; // slow指针每次移动一个节点
fast = fast.next.next; // fast指针每次移动两个节点
// 如果slow和fast指针相遇,说明链表有环
if (slow === fast) {
return true;
}
}
// 如果fast指针到达链表尾部,说明链表无环
return false;
}