你将如何遍历O(n ^ 0.5)中的链表?

时间:2011-06-24 18:17:36

标签: list linked-list

这是Apple的采访问题。 我发现没有令人信服的论据支持或反对它。

4 个答案:

答案 0 :(得分:4)

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

通过维护保留到中间节点的链接的第二个链表,可以比O(n)更快地进行随机访问;然而,由于第二个列表的维护复杂性增加,插入,删除和附加成本将会上升。

答案 1 :(得分:3)

不可能。

这假设您的意思是查看n个节点的链表中的每个节点。这可能是一个棘手的问题,看看你是否能够发现它是不可能的。

答案 2 :(得分:1)

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

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

查看维基百科有关Grover算法here的文章。

它们表示O(n ^ 0.5)的摊销运行时间和O(log n)的空间。还应该指出,它不是确定性的。这意味着算法很可能会返回正确的结果,但不能保证。

我猜这足以传递问题,但剩下的就是我的头脑。

祝你好运。

答案 3 :(得分:-1)

如果每个节点都与下一个元素,前一个元素和一个中心元素(中心是当前元素和列表末尾之间的中间点)有连接,则可能是这样。

思想?