Вращение массива — распространенная операция в программировании, при которой элементы массива циклически сдвигаются на определенное количество позиций. В этой статье блога мы рассмотрим различные методы поворота массива на K позиций, приведя примеры кода для каждого подхода. Независимо от того, новичок вы или опытный разработчик, эта статья поможет вам разобраться в различных методах и выбрать наиболее подходящий для вашего конкретного случая использования.
Метод 1: использование временного массива
Самый простой способ вращения массива — создание временного массива и копирование элементов с соответствующими сдвигами. Вот пример на Python:
def rotate_array(arr, k):
n = len(arr)
temp = [0] * n
for i in range(n):
temp[(i + k) % n] = arr[i]
return temp
# Example usage
array = [1, 2, 3, 4, 5]
k = 2
rotated_array = rotate_array(array, k)
print(rotated_array) # Output: [4, 5, 1, 2, 3]
Метод 2: перестановка подмассивов
Другой эффективный подход — перевернуть подмассивы внутри массива. Применив эту технику дважды, мы можем добиться желаемого эффекта вращения. Вот пример на Python:
def reverse_subarray(arr, start, end):
while start < end:
arr[start], arr[end] = arr[end], arr[start]
start += 1
end -= 1
def rotate_array(arr, k):
n = len(arr)
k = k % n
reverse_subarray(arr, 0, n - 1)
reverse_subarray(arr, 0, k - 1)
reverse_subarray(arr, k, n - 1)
return arr
# Example usage
array = [1, 2, 3, 4, 5]
k = 2
rotated_array = rotate_array(array, k)
print(rotated_array) # Output: [4, 5, 1, 2, 3]
Метод 3: использование срезов массива
В Python мы можем воспользоваться срезами массива для эффективного вращения массива. Вот пример:
def rotate_array(arr, k):
n = len(arr)
k = k % n
return arr[-k:] + arr[:-k]
# Example usage
array = [1, 2, 3, 4, 5]
k = 2
rotated_array = rotate_array(array, k)
print(rotated_array) # Output: [4, 5, 1, 2, 3]