Найти дубликат за O(1) памяти

Два указателя Легкая
Массив nums длины n+1 содержит числа из диапазона [1, n]. Ровно одно число повторяется (возможно, больше одного раза), остальные встречаются ровно по разу. Найдите повторяющееся число, не изменяя массив и используя O(1) дополнительной памяти (то есть без хеш-множества). Подсказка: если рассматривать nums[i] как указатель на следующий индекс i -> nums[i], массив превращается в связный список с циклом - воспользуйтесь алгоритмом обнаружения цикла (черепаха и заяц).
Сигнатура функции
find_duplicate(nums: list[int]) -> int
Примеры
ВходОжидаемый результат
[[1, 3, 4, 2, 2]]2
[[3, 1, 3, 4, 2]]3
1решили
1пытались
100%успешность
Войдите, чтобы решить →