Given a matrix of size N*M, and a number K. We have to rotate the matrix K times to the right side.
Examples:
Input : N = 3, M = 3, K = 2
12 23 34
45 56 67
78 89 91
Output : 23 34 12
56 67 45
89 91 78
Input : N = 2, M = 2, K = 2
1 2
3 4
Output : 1 2
3 4
A simple yet effective approach is to consider each row of the matrix as an array and perform an array rotation. This can be done by copying the elements from K to end of array to starting of array using temporary array. And then the remaining elements from start to K-1 to end of the array.
Lets take an example:

Java
class GFG
{
static final int M= 3 ;
static final int N= 3 ;
static void rotateMatrix( int matrix[][], int k)
{
int temp[]= new int [M];
k = k % M;
for ( int i = 0 ; i < N; i++)
{
for ( int t = 0 ; t < M - k; t++)
temp[t] = matrix[i][t];
for ( int j = M - k; j < M; j++)
matrix[i][j - M + k] = matrix[i][j];
for ( int j = k; j < M; j++)
matrix[i][j] = temp[j - k];
}
}
static void displayMatrix( int matrix[][])
{
for ( int i = 0 ; i < N; i++)
{
for ( int j = 0 ; j < M; j++)
System.out.print(matrix[i][j] + " " );
System.out.println();
}
}
public static void main (String[] args)
{
int matrix[][] = {{ 12 , 23 , 34 },
{ 45 , 56 , 67 },
{ 78 , 89 , 91 }};
int k = 2 ;
rotateMatrix(matrix, k);
displayMatrix(matrix);
}
}
|
Output: 23 34 12
56 67 45
89 91 78
Time Complexity: O(N*M)
Auxiliary Space: O(M)
Please refer complete article on Rotate the matrix right by K times for more details!