Open In App

PHP Program to Rotate the matrix right by K times

Last Updated : 23 Jul, 2024
Summarize
Comments
Improve
Suggest changes
Share
Like Article
Like
Report

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 the end of the array to starting of an array using a temporary array. And then the remaining elements from the start to K-1 to the end of the array.

Let's take an example: 

Below is the implementation of above approach:

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 times
function 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 matrix
function 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 k
rotateMatrix($matrix, $k);

// display rotated matrix
displayMatrix($matrix);

// This code is contributed by 
// Manish Shaw(manishshaw1)
?>

Output
23 34 12 
56 67 45 
89 91 78 

Complexity Analysis:

  • Time Complexity: O(N*M)
  • Auxiliary Space: O(M)

Please refer complete article on Rotate the matrix right by K times for more details!


Next Article
Article Tags :

Similar Reads