C++ Program to Modify a matrix by rotating ith row exactly i times in clockwise direction
Last Updated :
31 Mar, 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:
C++
#include <bits/stdc++.h>
using namespace std;
void rotateMatrix(vector<vector< int > >& mat)
{
int i = 0;
for ( auto & it : mat) {
reverse(it.begin(), it.end());
reverse(it.begin(), it.begin() + i);
reverse(it.begin() + i, it.end());
i++;
}
for ( auto rows : mat) {
for ( auto cols : rows) {
cout << cols << " " ;
}
cout << "\n" ;
}
}
int main()
{
vector<vector< int > > mat
= { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } };
rotateMatrix(mat);
return 0;
}
|
Java
import java.util.*;
class Main {
static void rotateMatrix(List<List<Integer> > mat)
{
int i = 0 ;
for (List<Integer> it : mat) {
Collections.reverse(it);
Collections.reverse(it.subList( 0 , i));
Collections.reverse(it.subList(i, it.size()));
i++;
}
for (List<Integer> rows : mat) {
for ( int cols : rows) {
System.out.print(cols + " " );
}
System.out.println();
}
}
public static void main(String[] args)
{
List<List<Integer> > mat = new ArrayList<>();
mat.add(Arrays.asList( 1 , 2 , 3 ));
mat.add(Arrays.asList( 4 , 5 , 6 ));
mat.add(Arrays.asList( 7 , 8 , 9 ));
rotateMatrix(mat);
}
}
|
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!
Share your thoughts in the comments
Please Login to comment...