c-如何使用O(N)空间复杂度在链表中查找循环



我知道我们可以使用两个指针和循环检测算法,但上周在一次采访中,我被要求使用O(N) space Complexity来做同样的事情。如何进行?

有关详细实现,请阅读本文(如何仅使用两个内存位置来确定链表是否有循环)。

基本上,您维护两个指针,这两个指针最初都指向链表的头部。在每个枚举中,将第一个指针前移一个节点,将另一个指针前移两个节点。如果在某个时刻,这两个指针再次到达相同的节点,则检测到循环。

我从你的描述中了解到,你确实知道这个算法。如果不考虑链表本身占用的空间,则该链表在O(1)空间中工作。即使考虑到这么多空间,它仍然是O(n)。(如果空间复杂性是唯一的问题,那么显然存在更差的算法。)

相关内容

  • 没有找到相关文章

最新更新