这是Apple的采访问题。 我发现没有令人信服的论据支持或反对它。
答案 0 :(得分:4)
遍历比O(n)效率更高是不可能的,因为“遍历”需要依次访问每个节点。
通过维护保留到中间节点的链接的第二个链表,可以比O(n)更快地进行随机访问;然而,由于第二个列表的维护复杂性增加,插入,删除和附加成本将会上升。
答案 1 :(得分:3)
不可能。
这假设您的意思是查看n个节点的链表中的每个节点。这可能是一个棘手的问题,看看你是否能够发现它是不可能的。
答案 2 :(得分:1)
当我第一次遇到这个问题时,我认为这里和大多数人一样:这是不可能的,一个技巧问题,某种心理测验。 我错了。
真正的答案是,至少在理论上,使用量子计算机可以比O(N)更快地遍历列表。
查看维基百科有关Grover算法here的文章。
它们表示O(n ^ 0.5)的摊销运行时间和O(log n)的空间。还应该指出,它不是确定性的。这意味着算法很可能会返回正确的结果,但不能保证。
我猜这足以传递问题,但剩下的就是我的头脑。
祝你好运。
答案 3 :(得分:-1)
如果每个节点都与下一个元素,前一个元素和一个中心元素(中心是当前元素和列表末尾之间的中间点)有连接,则可能是这样。
思想?