64,677
社区成员
发帖
与我相关
我的任务
分享
Do not let me think! 比较简单直观的解法是map每个走过节点的地址值,有重复就有环。
跑步为实数模型,这个问题是自然数模型,有一定的区别。 [quote=引用 4 楼 lovesmiles 的回复:] 这个问题就像跑步,跑得快的人在前面。跑得慢的人在后面,然后跑着跑着居然跑得慢的人和跑得快的人跑到了同一个点,肯定是在围着圈跑,所以存在环。
跑步为实数模型,这个问题是自然数模型,有一定的区别。 这个问题就像跑步,跑得快的人在前面。跑得慢的人在后面,然后跑着跑着居然跑得慢的人和跑得快的人跑到了同一个点,肯定是在围着圈跑,所以存在环。
这个问题就像跑步,跑得快的人在前面。跑得慢的人在后面,然后跑着跑着居然跑得慢的人和跑得快的人跑到了同一个点,肯定是在围着圈跑,所以存在环。
想象一下,体育课的跑操场就可以了。
for (int i = 0; i < STEP; ++i)
{
fast = fast->next;
if (fast == slow)
{
return true;
}
}
不是奇偶的问题。要点是2-1=1,所以每次只能缩小1格差距,所以总会碰上。你把1,2改成2,3或者3,4或者100,101都可以。不过1,2跑起来最快就是。 如果是2,7的话那如果环的长度正好整除5,但是你进环的时候正好错开的话那就永远检测不到了。