DSA problem
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.
A clockwise rotation by 90 degrees sends the element at (i, j) to position (j, n - 1 - i). Doing this directly with a temporary array would violate the in-place requirement, so the trick is to decompose the rotation into two simpler in-place operations.
The intuition for the optimal approach is a two-step transformation: first transpose the matrix in place by swapping matrix[i][j] with matrix[j][i] for all j > i, then reverse each row. Transposing flips the matrix across its main diagonal, and reversing each row then flips it horizontally; the composition of these two reflections is exactly a 90-degree clockwise rotation. Both steps operate purely with element swaps inside the original matrix, so no extra 2D array is needed and the work is quadratic in n.
Examples
matrix = [[1,2,3],[4,5,6],[7,8,9]][[7,4,1],[8,5,2],[9,6,3]]matrix = [[5,1,9,11],[2,4,8,10],[13,3,6,7],[15,14,12,16]][[15,13,2,5],[14,3,4,1],[12,6,8,9],[16,7,10,11]]matrix = [[1]][[1]]Constraints
- n == matrix.length == matrix[i].length
- 1 <= n <= 20
- -1000 <= matrix[i][j] <= 1000
3 hints and a full solution walkthrough with step-by-step visualizations are available in the practice editor.