如何在不使用额外内存或变量的情况下检查链表是否是循环的?



如果给出头部,如何在不使用额外内存的情况下检查链表是否是循环

我们可以在这里使用两个指针

  1. 指向头部的慢指针。

  2. 快速指针,也指向头部。

现在慢指针将逐个遍历列表(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/

相关内容

  • 没有找到相关文章

最新更新