Я посмотрел другие посты здесь относительно того же вопроса CTCI, но ничто не решает конкретную проблему, с которой я столкнулся, пытаясь понять, как решить эту проблему. этот вопрос подходит близко, но ответ все еще смущает меня.
Для краткого изложения проблемы:
Решение в книге сначала говорит, что у меня должно быть два указателя, один «быстрый» и один «медленный», где быстрый указатель перемещает два шага за итерацию, тогда как медленный просто перемещает один шаг. Автор утверждает, что если медленному указателю войти в цикл за k шагов, то быстрый указатель переместился на 2 тыс. Шагов.
Иначе говоря, это означает, что когда медленный указатель находится в 0 шагах от узла, быстрый указатель перемещает k шагов, но, поскольку существует вероятность того, что k больше размера цикла, я действительно должен рассмотреть k % loop_size.
Это мой первый вопрос, автор пишет, что мы вводим заглавную букву K, а K определяется как k% loop_size. Я получаю, что я loop_size - k отходит от головы, когда входит медленный, что означает, что я сталкиваюсь с любым узлом loop_size - k ступеней в цикл или K шагов до петли, но ответ не объясняет мне, почему точно то, что K шагов от цикла означает, что я также войду в начало цикла после k шагов. То есть, если для возврата в начало цикла требуется k% loop_size, почему я гарантирую, что я тоже буду в начале при k шагах?