# Java Program to Modify a matrix by rotating ith row exactly i times in clockwise direction

Last Updated : 17 Aug, 2023

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:

Below is the implementation of the above approach:

## Java

 `// java program for the above approach ` `import` `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.`

Output:

```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!