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:
PHP
<?php// PHP program to rotate // a matrix right by k times// size of matrix$M = 3;$N = 3;// function to rotate// matrix by k timesfunction rotateMatrix(&$matrix, $k) { global $M, $N; // temporary array // of size M $temp = array(); // within the size // of matrix $k = $k % $M; for ($i = 0; $i < $N; $i++) { // copy first M-k elements // to temporary array for ($t = 0; $t < $M - $k; $t++) $temp[$t] = $matrix[$i][$t]; // copy the elements from // k to end to starting for ($j = $M - $k; $j < $M; $j++) $matrix[$i][$j - $M + $k] = $matrix[$i][$j]; // copy elements from // temporary array to end for ($j = $k; $j < $M; $j++) $matrix[$i][$j] = $temp[$j - $k]; }}// function to display// the matrixfunction displayMatrix(&$matrix) { global $M, $N; for ($i = 0; $i < $N; $i++) { for ($j = 0; $j < $M; $j++) echo ($matrix[$i][$j]." "); echo (""); }}// Driver code$matrix = array(array(12, 23, 34), array(45, 56, 67), array(78, 89, 91));$k = 2;// rotate matrix by krotateMatrix($matrix, $k);// display rotated matrixdisplayMatrix($matrix);// This code is contributed by // Manish Shaw(manishshaw1)?> |
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!
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!

