• 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] << " ";
  }
}