AlgoInsight

DSA problem

Rotate Image

MediumMatrix (2D Array)Pattern: Matrix Manipulationtop75AmazonMicrosoftAppleGoogleFacebook

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

Example 1
Input: matrix = [[1,2,3],[4,5,6],[7,8,9]]
Output: [[7,4,1],[8,5,2],[9,6,3]]
Explanation: After transposing, the matrix becomes [[1,4,7],[2,5,8],[3,6,9]]; reversing each row gives the rotated result.
Example 2
Input: matrix = [[5,1,9,11],[2,4,8,10],[13,3,6,7],[15,14,12,16]]
Output: [[15,13,2,5],[14,3,4,1],[12,6,8,9],[16,7,10,11]]
Explanation: Transpose across the main diagonal, then reverse each row to complete the clockwise rotation.
Example 3
Input: matrix = [[1]]
Output: [[1]]
Explanation: A 1x1 matrix is unchanged by any rotation.

Constraints

3 hints and a full solution walkthrough with step-by-step visualizations are available in the practice editor.

matrixarrayin-placetwo-dimensional

Browse all DSA problems