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:
Python3
# Python program to rotate # a matrix right by k times # size of matrix M = 3
N = 3
matrix = [[ 12 , 23 , 34 ],
[ 45 , 56 , 67 ],
[ 78 , 89 , 91 ]]
# function to rotate # matrix by k times def rotateMatrix(k) :
global M, N, matrix
# temporary array
# of size M
temp = [ 0 ] * M
# within the size
# of matrix
k = k % M
for i in range ( 0 , N) :
# copy first M-k elements
# to temporary array
for t in range ( 0 , M - k) :
temp[t] = matrix[i][t]
# copy the elements from
# k to end to starting
for j in range (M - k, M) :
matrix[i][j - M + k] = matrix[i][j]
# copy elements from
# temporary array to end
for j in range (k, M) :
matrix[i][j] = temp[j - k]
# function to display # the matrix def displayMatrix() :
global M, N, matrix
for i in range ( 0 , N) :
for j in range ( 0 , M) :
print ( "{} " .
format (matrix[i][j]), end = "")
print ()
# Driver code k = 2
# rotate matrix by k rotateMatrix(k) # display rotated matrix displayMatrix() # This code is contributed by # Manish Shaw(manishshaw1) |
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!