Tutorialspoint
Problem
Solution
Submissions

Rotate Image

Certification: Intermediate Level Accuracy: 0% Submissions: 0 Points: 10

Write a C program to rotate an n x n 2D matrix representing an image by 90 degrees clockwise in-place. 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 1
  • Input: matrix = [[1,2,3],[4,5,6],[7,8,9]]
  • Output: [[7,4,1],[8,5,2],[9,6,3]]
  • Explanation: Original matrix: 1 2 3 / 4 5 6 / 7 8 9. After 90° clockwise rotation: 7 4 1 / 8 5 2 / 9 6 3.
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: Original 4x4 matrix with elements arranged in rows. After rotation, first column becomes first row in reverse order. The transformation follows the pattern: matrix[i][j] -> matrix[j][n-1-i].
Constraints
  • 1 ≤ n ≤ 20
  • -1000 ≤ matrix[i][j] ≤ 1000
  • The matrix is a square matrix (n x n)
  • Time Complexity: O(n^2)
  • Space Complexity: O(1)
MatrixGoogleeBay
Editorial

Login to view the detailed solution and explanation for this problem.

My Submissions
All Solutions
Lang Status Date Code
You do not have any submissions for this problem.
User Lang Status Date Code
No submissions found.

Please Login to continue
Solve Problems

 
 
 
Output Window

Don't have an account? Register

Solution Hints

  • First transpose the matrix (swap elements across main diagonal)
  • Then reverse each row to get 90-degree clockwise rotation
  • Alternative approach: rotate elements in concentric squares
  • For transpose: swap matrix[i][j] with matrix[j][i]
  • For row reversal: swap matrix[i][j] with matrix[i][n-1-j]
  • Process only upper triangle during transpose to avoid double swapping

Steps to solve by this approach:

 Step 1: Transpose the matrix by swapping elements across the main diagonal
 Step 2: Iterate through upper triangle to avoid double swapping during transpose
 Step 3: Swap matrix[i][j] with matrix[j][i] for all i < j
 Step 4: Reverse each row of the transposed matrix
 Step 5: Use two pointers (left and right) to reverse each row
 Step 6: Swap elements from both ends moving towards center
 Step 7: The combination of transpose and row reversal gives 90° clockwise rotation

Submitted Code :