Skip to main content

判断链表是否有环

快慢指针法

function hasCircle(head) {
let fast = head;
let slow = head;
while (fast && slow && fast.next) {
slow = slow.next;
fast = fast.next.next;
if (fast === slow) {
return true;
}
}
return false;
}

记录法

function hasCircle(head) {
let visitedSet = new Set();
while (head) {
if (visitedSet.has(head)) {
return true;
}
visitedSet.add(head);
head = head.next;
}
return false;
}