先由一个例子引入:在一个环形跑道上,有2个人正在跑步且他们的速度各不相同。那么,最终跑快的人会追上跑得慢的人。
Floyd判圈算法就是像这样的算法。其实算法思路很简单。大概如下:
do
{
k1 = next(1,k1);//第一个人走
k2 = next(2,k2);//第二个人走
}while(k1!=k2);
这样,就可以在一个有环的问题上,加快时间效率,并把空间变为O(1)。
本文共 248 字,大约阅读时间需要 1 分钟。
先由一个例子引入:在一个环形跑道上,有2个人正在跑步且他们的速度各不相同。那么,最终跑快的人会追上跑得慢的人。
Floyd判圈算法就是像这样的算法。其实算法思路很简单。大概如下:
do
{
k1 = next(1,k1);//第一个人走
k2 = next(2,k2);//第二个人走
}while(k1!=k2);
这样,就可以在一个有环的问题上,加快时间效率,并把空间变为O(1)。
转载于:https://www.cnblogs.com/ouqingliang/p/9245313.html