如何在O(n^0.5)中遍历链表

  • 本文关键字:遍历 链表 list linked-list
  • 更新时间 :
  • 英文 :


这是苹果公司的一个采访问题。我还没有找到任何令人信服的论据来支持或反对它。

遍历不可能比O(n)更高效,因为"遍历"需要依次访问每个节点

不过,通过维护保留到中间节点的链接的第二个链表,可以使随机访问比O(n)更快;但是,由于第二个列表维护的复杂性增加,插入、删除和追加成本将增加。

不可能

这是假设您的意思是查看n个节点的链接列表中的每个节点。这可能是一个技巧性的问题,看看你是否能弄清楚这是不可能的。

当我第一次遇到这个问题时,我和这里的大多数人一样认为:这是不可能的,一个技巧问题,某种心理测试。我错了。

真正的答案是,至少在理论上,使用量子计算机可以比O(N)更快地遍历列表。

查看维基百科上关于Grover算法的文章。

它们规定了O(n^0.5)的摊余运行时间和O(logn)的空间。还应该注意的是,它不是确定性的。这意味着算法很有可能返回正确的结果,但这并不能保证。

我想这已经足够通过这个问题了,但其余的都超出了我的想象。

祝你好运。

也许每个节点都有到下一个元素、上一个元素和中心元素的连接(其中中心是当前元素和列表末尾之间的中点)。

想法?

相关内容

  • 没有找到相关文章

最新更新