Problem Description
🔗 Link to Question: https://leetcode.com/problems/rotate-image/editorial/
You are given an n x n
 2D matrix
 representing an image, rotate the image by 90 degrees (clockwise).
Observation 🔎
Naive Approach
- Observe that the ith col turns into ith row in reversed form
- Create a New Matrix and use it to update the original matrix.
Code
class Solution { public: void rotate(vector<vector<int>>& matrix) { int n=matrix.size(); auto v = matrix; for(int i=0; i<n; i++) { for(int j=0; j<n; j++) { matrix[j][n-i-1] = v[i][j]; } } } };
Complexity Analysis
- Time:
- Space:
Using Matrix Operations
- Transpose the Matrix
- Now columns ↔ rows are interchanged Or we’ve performed a reverse operation around the diagonals.
- Reverse the Rows.
We are just exploiting the fact that columns are turned into rows in reversed fashion.
Code
class Solution { public: void rotate(vector<vector<int>>& matrix) { int n=matrix.size(); //Transpose the Matrix transpose(matrix); //Reverse the rows for(int i=0; i<n; i++) { reverse(matrix[i].begin(), matrix[i].end()); } } //Reverse around the Diagonal void transpose(vector<vector<int>>& matrix) { int n=matrix.size(); for(int i=0; i<n; i++) { //[0..i-1] columns are correctly modified for(int j=i; j<n; j++) { swap(matrix[i][j], matrix[j][i]); } //After modifying ith row, ith col is also correctly modified } } };
Complexity Analysis
- Time:
- Space:
Top comments (0)