如果给出头部,如何在不使用额外内存的情况下检查链表是否是循环
的我们可以在这里使用两个指针
-
指向头部的慢指针。
-
快速指针,也指向头部。
现在慢指针将逐个遍历列表(slow= slow.next)
而快速指针将提前一个节点跳(fast = fast.next.next)
.
因此,如果它们在任何位置相遇,那么 linkedlist 中就会有一个循环,或者如果快速指针通过指向 null 值而终止,则意味着链接列表中没有循环。
condition -> if(fast.value == slow.value)
然后有一个循环。
您可以参考此链接以获取更多说明 -> https://www.geeksforgeeks.org/detect-loop-in-a-linked-list/