Floyd's循环检测算法中快速指针的最佳速度

时间:2016-04-03 00:41:10

标签: c++ algorithm linked-list cycle floyd-cycle-finding

从CEGRD的回答(Explain how finding cycle start node in cycle linked list work?)我们可以看到,如果快速指针的速度是慢速指针的时间速度,那么满足它们的下列标准应该成立: i:慢指针覆盖的长度 m:从链表开始到循环开始的距离 n:循环长度 k:从循环开始到当前节点的距离(

i = m + p*n + k
c*i = m + q*n + k
=> m + k = n(q - p*c)/(c-1);

现在我们必须最小化i,减少到i = n(b-a)/ c-1;     => c必须大到最小化i因此c = 2不是最佳值,c应该大。 请帮忙。

0 个答案:

没有答案