Given a matrix mat[][] of dimensions M * N, the task is to print the matrix obtained after rotating every ith row of the matrix i times in a clockwise direction.
Examples:
Input: mat[][] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}
Output:
1 2 3
6 4 5
8 9 7
Explanation:
The 0th row is rotated 0 times. Therefore, the 0th row remains the same as {1, 2, 3}.
The 1st row is rotated 1 times. Therefore, the 1st row modifies to {6, 4, 5}.
The 2nd row is rotated 2 times. Therefore, the 2nd row modifies to {8, 9, 7}.
After completing the above operations, the given matrix modifies to {{1, 2, 3}, {6, 4, 5}, {8, 9, 7}}.Input: mat[][] = {{1, 2, 3, 4}, {4, 5, 6, 7}, {7, 8, 9, 8}, {7, 8, 9, 8}}
Output:
1 2 3 4
7 4 5 6
9 8 7 8
8 9 8 7
Approach: Follow the steps below to solve the problem:
- Traverse the given matrix in row – wise manner and for every ith row, perform the following steps:
- Reverse the current row of the matrix.
- Reverse the first i elements of the current row.
- Reverse the last (N – i) elements of the current row, where N is the current size of the row.
- After completing the above steps, print the matrix mat[][].
Below is the implementation of the above approach:
Java
// java program for the above approachimport java.io.*;import java.lang.*;import java.util.*;  class GFG {    // Function to reverse arr[] from start to end  static void reverse(int arr[], int start, int end)  {    while (start < end) {      int temp = arr[start];      arr[start] = arr[end];      arr[end] = temp;      start++;      end--;    }  }    // Function to rotate every i-th  // row of the matrix i times  static void rotateMatrix(int mat[][])  {    int i = 0;      // Traverse the matrix row-wise    for (int rows[] : mat) {        // Reverse the current row      reverse(rows, 0, rows.length - 1);        // Reverse the first i elements      reverse(rows, 0, i - 1);        // Reverse the last (N - i) elements      reverse(rows, i, rows.length - 1);        // Increment count      i++;    }      // Print final matrix    for (int rows[] : mat) {      for (int cols : rows) {        System.out.print(cols + " ");      }      System.out.println();    }  }    // Driver Code  public static void main(String[] args)  {      int mat[][] = { { 1, 2, 3 },                    { 4, 5, 6 },                    { 7, 8, 9 } };      rotateMatrix(mat);  }}  // This code is contributed by Kingash. |
1 2 3 6 4 5 8 9 7
Â
Time Complexity: O(N*M), as we are using nested loops to traverse N*M times.
Auxiliary Space: O(1), as we are not using any extra space.
Please refer complete article on Modify a matrix by rotating ith row exactly i times in clockwise direction for more details!
