Python Program for Array Rotation
Given an array of integers and a number d, the task is to rotate the array to the left by 'd' positions. In left rotation, each element moves one position to the left, and the first element moves to the end of the array.
Example:
Input: [1, 2, 3, 4, 5]
d=2Output: [3, 4, 5, 1, 2]
Using List Slicing
This method rotates an array by splitting it into two parts using slicing and then joining them in reverse order.
arr = [1, 2, 3, 4, 5, 6]
d = 2
arr[:] = arr[d:] + arr[:d]
print(arr)
Output
[3, 4, 5, 6, 1, 2]
Explanation:
- arr[d:]: elements from index d to end.
- arr[:d]: first d elements.
- arr[:] = arr[d:] + arr[:d]: updates array in-place.
Using reverse() Method
This method rotates an array by reversing the entire array and then reversing its parts separately.
arr = [1, 2, 3, 4, 5, 6, 7, 8]
d = 2
n = len(arr)
arr.reverse()
arr[:n-d] = arr[:n-d][::-1]
arr[n-d:] = arr[n-d:][::-1]
print(arr)
Output
[3, 4, 5, 6, 7, 8, 1, 2]
Explanation:
- arr.reverse(): reverses the whole array.
- arr[:n-d][::-1] reverses the first part.
- arr[n-d:][::-1] reverses the last part.
Using Temporary Array
This method rotates an array by storing the first 'd' elements in a temporary array, shifting the remaining elements left, and then appending the stored elements at the end.
arr = [1, 2, 3, 4, 5, 6, 7]
d = 2
n = len(arr)
temp = arr[:d]
arr[:n-d] = arr[d:]
arr[n-d:] = temp
print(arr)
Output
[3, 4, 5, 6, 7, 1, 2]
Explanation:
- temp = arr[:d] store the first d elements.
- arr[:n-d] = arr[d:] shift the remaining elements left.
- arr[n-d:] = temp place the stored elements at the end.
One by One Rotation
arr = [1, 2, 3, 4, 5, 6, 7]
d = 2
n = len(arr)
for i in range(d):
arr.append(arr.pop(0))
print(arr)
Output
[3, 4, 5, 6, 7, 1, 2]
Explanation:
- arr.pop(0): removes the first element.
- arr.append(...): adds it to the end.
- Repeating d times rotates the array left by d positions.