Задача состоит в том, чтобы переупорядочить массив так, чтобы arr[i]
стал arr[arr[i]]
с дополнительным пространством O(1)
.
Пример:
2 1 3 5 4 0
становится:
3 1 5 0 4 2
Я могу придумать решение O(n²)
. Решение O(n)
было представлено здесь:
- Увеличить каждый элемент массива
arr[i]
на(arr[arr[i]] % n)*n
.- Разделите каждый элемент на
n
.
Но это очень ограничено, так как это вызовет переполнение буфера.
Может ли кто-нибудь придумать улучшение?