- Rotate array by k steps (in-place).
arr = [1, 2, 3, 4, 5, 6]
k = 2 % len(arr)
def reverse(start, end):
while start < end:
arr[start], arr[end] = arr[end], arr[start]
start += 1
end -= 1
reverse(0, len(arr)-1)
reverse(0, k -1)
reverse(k, len(arr)-1)
print(arr)
#include <iostream>
using namespace std;
void swap(int &a, int &b) {
int temp = a;
a = b;
b = temp;
}
void rotate(int *arr, int start, int end) {
while (start < end) {
swap(arr[start], arr[end]);
start++;
end--;
}
}
int main() {
int arr[] = {1, 2, 3, 4, 5, 6};
int n = sizeof(arr) / sizeof(arr[0]);
int k = 2 % n;
rotate(arr, 0, n - 1);
rotate(arr, 0, k - 1);
rotate(arr, k, n - 1);
for (int i = 0; i < n; i++) {
cout << arr[i] << " ";
}
}