Menu
CoddyTech

Rotate Array

Дан массив целых чисел nums и число k. Выполните циклический сдвиг массива вправо на k шагов: за один шаг каждое значение перемещается на одну позицию вправо, а последнее значение переносится в начало. Верните сдвинутый массив.

k может быть намного больше длины массива.

Функция

rotate(nums: integer-array, k: integer) → integer-array
numsinteger-array
массив целых чисел, который нужно повернуть
kinteger
на сколько шагов повернуть направо
Возвращаетinteger-array
числа, циклически сдвинутые вправо на k шагов

Ограничения

  • 1 ≤ nums.length ≤ 5000
  • -104 ≤ nums[i] ≤ 104
  • 0 ≤ k ≤ 109

Примеры

Ввод
nums = [4, 9, 1, 6, 3]k = 2
Вывод
[6, 3, 4, 9, 1]
Пояснение
Два шага вправо переносят последние два значения, 6 и 3, в начало. Остальные три значения перемещаются на два места вправо и сохраняют свой порядок: [6, 3, 4, 9, 1].
challenge icon

Дополнительный вопрос

Можешь ли ты выполнить циклический сдвиг на месте, перемещая каждое значение напрямую в (i + k) mod n и продолжая перемещать вытесненное им значение? Сколько циклов для этого потребуется?

Сбросить код
def rotate(nums, k):
    # Напишите код здесь

Тест #1

Тест #2

Тест #3

Аргументы

nums = [4, 9, 1, 6, 3]
k = 2

Ожидаемый вывод

[6, 3, 4, 9, 1]