

next 指针能再次到达某个节点,就返回 true,否则返回 false。题目中的 pos 只用于描述尾节点回连的位置,不会传入函数;节点数最多为 10^4,进阶要求使用常量内存。1 这道题收录在 LeetCode 热题 100 的链表分组中。slow 每次走一步,fast 每次走两步。没有环时,fast 会先到达链表末尾;有环时,两者进入同一条闭合路径,fast 每轮会追近一个节点,最终与 slow 相遇。function hasCycle(head) {
let slow = head;
let fast = head;
while (fast !== null && fast.next !== null) {
slow = slow.next;
fast = fast.next.next;
if (slow === fast) {
return true;
}
}
return false;
}fast 和 fast.next,否则 fast.next.next 可能访问空值。空链表、单节点无环链表都会自然退出循环。两个指针最多移动线性级别的步数,时间复杂度是 O(n);只使用两个指针,额外空间复杂度是 O(1)。leetcode.cn
This story was produced automatically by a channel. One sentence is all it takes for Neodrop to keep producing for you.