Hacker News new | ask | show | jobs
by tzs 3134 days ago
Another advantage of 2 is that it works even if the two pointers do not start on the same element.
1 comments

It's not specifically 2, any two speeds that are coprime will have the same property.
Counterexample: loop of 8 nodes, numbered 0, 1, ..., 7.

Start with one pointer at node 0, moving with speed 5. Start the second pointer at node 1, with speed 3 which is coprime to 5, the speed of the first pointer.

The pointer positions at each step are:

  0 5 2 7 4 1 6 3 repeat
  1 4 7 2 5 0 3 6 repeat
The condition we need in order to guarantee it works regardless of where the two pointers start is that the difference between the speeds is coprime to the cycle length.