Проблема

Дан массив, поверните массив вправо на k шагов, где k неотрицательно.

Решение 1

Есть несколько способов решить эту проблему. Используя 2 указателя и 2 цикла, массив можно вращать со сложностью O (n). Это включает в себя создание копии.

Решение 2

Другой подход заключается в повороте массива на месте. Этот подход имеет временную сложность O (a + b).

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