141. Linked List Cycle
Intuition
If a walker(slow) and runner(fast) on a cycle, sooner or latter, they will meet each other.
Proof
Why walker and runner will meet
- Denote Cas the cycle length.
- Denote Las the leading segement.
When the walker enters the cycle, the runner has already been L % C. Thus, runner needs run more than (C - L % C) + (k * C), where k ∈ [0, +∞) and the (C - L % C) + (k * C) must be the multiple of speed difference.
Why the speed of fast should be twice of the slow one
如果 k 是倍数,
steps = ((C - L % C) + kC) / (k - 1)
      = (2C - L % C) / (k - 1) + C
How to find the Cycle length
Store where the point is, use another one to walk until they meets.