【发布时间】:2016-09-07 22:19:49
【问题描述】:
我想找到checks a linked-list with n elements for consistency 的算法。链表使用dummy head(也称为哨兵节点)。该算法需要run in O(n) time 并且允许use O(1) extra space 除了遍历列表所需的空间。列表is unknown 的size。另外它是forbidden to modify the list。
如果存在指向前一个列表项的列表项,则列表计为不一致。 首先,我考虑存储第一个元素,然后在将当前元素与第一个元素进行比较时遍历列表。
【问题讨论】:
-
你知道
n吗? -
否,因为列表的大小未知。所以算法应该能够检查任何大小(或 n 个元素)的一致性
-
好吧,在这种情况下,弗洛伊德的算法是你能得到的最好的算法(不使用额外的存储空间)
-
同意乔普。弗洛伊德的龟兔赛跑可以满足您的需求。 en.wikipedia.org/wiki/Cycle_detection#Tortoise_and_hare
标签: algorithm performance linked-list singly-linked-list sentinel