48. Rotate Image
Description
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.
Constraints
matrix.length == n
matrix[i].length == n
1 <= n <= 20
-1000 <= matrix[i][j] <= 1000
Approach
Links
GeeksforGeeks
YouTube
Examples
Input: matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
Output: [[7, 4, 1], [8, 5, 2], [9, 6, 3]]

Solutions
/**
* Time complexity : O(N*N)
* Space complexity : O(1)
*/
class Solution {
public void rotate(int[][] matrix) {
if(matrix == null || matrix.length == 0) return;
int row = matrix.length,
col = matrix.length;
// trnspose of a matrix
for(int r = 0; r < row; r++) {
for(int c = r+1; c < col; c++) {
int tmp = matrix[r][c];
matrix[r][c] = matrix[c][r];
matrix[c][r] = tmp;
}
}
// swap columns
for(int c = 0; c < col/2; c++) {
for(int r = 0; r < row; r++) {
int tmp = matrix[r][c];
matrix[r][c] = matrix[r][col-c-1];
matrix[r][col-c-1] = tmp;
}
}
}
}
Follow up
Last updated
Was this helpful?