Проблема
Дан массив, поверните массив вправо на k шагов, где k неотрицательно.
Решение 1
Есть несколько способов решить эту проблему. Используя 2 указателя и 2 цикла, массив можно вращать со сложностью O (n). Это включает в себя создание копии.
Решение 2
Другой подход заключается в повороте массива на месте. Этот подход имеет временную сложность O (a + b).
- Первый цикл сдвигает все значения вправо на «k» индексов. Это сохраняет начальные значения «k» в массиве. Длина исходного массива теперь равна исходной длине + k.
- Следующим шагом является замена начальных значений «k» в начале массива. Это достигается путем переназначения каждому из этих индексов извлеченного значения из задней части индекса. Это выполняется k раз.
- Результатом является массив, который был повернут на месте.