MEDIUM
Rotate Image
You are given an n x n 2D matrix representing an image, rotate the image by 90 degrees (clockwise).
You have to rotate the image in-place, which means you have to modify the input 2D matrix directly. DO NOT allocate another 2D matrix and do the rotation.
Example
Input:
matrix = [[1,2,3],[4,5,6],[7,8,9]]
Output:
[[7,4,1],[8,5,2],[9,6,3]]
Explanation:
Rotate the matrix by 90 degrees clockwise.
Constraints
- n == matrix.length == matrix[i].length
- 1 ≤ n ≤ 20
- -1000 ≤ matrix[i][j] ≤ 1000
Solution: In-Place Rotation
- Time Complexity: O(n^2)
- Space Complexity: O(1)
C++
class Solution {
public:
void rotate(vector<vector<int>>& m) {
int n = m.size();
for (int i = 0; i < n; i++)
for (int j = i; j < n; j++)
swap(m[i][j], m[j][i]); // Transpose
for (int i = 0; i < n; i++)
for (int j = 0; j < n/2; j++)
swap(m[i][j], m[i][n-j-1]); // Reverse each row
}
};