для транспонирования матрицы из одной в другую двумерный цикл обхода
public void rotate(int[] arr, int k) {
k = k % (arr.length);
if (k == 0) return;
reverse(arr, 0, arr.length - 1);
reverse(arr, 0, k - 1);
reverse(arr, k, arr.length - 1);
}
private static void reverse(int[] arr, int start, int end) {
for (int i = start; i <= (start + end)/2; i++) {
int j = end - i + start;
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}