Skip to content

48. Rotate Image

MediumLeetCode

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.

48. Rotate Image

Example 1

Input: matrix = [[1,2,3],[4,5,6],[7,8,9]]

Output: [[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]]

Constraints

  • n == matrix.length == matrix[i].length
  • 1 <= n <= 20
  • -1000 <= matrix[i][j] <= 1000

How to solve the problem

  • Matrix Transpose + Row Reversal

Code

python
class Solution:
    def rotate(self, matrix: List[List[int]]) -> None:
        """
        Do not return anything, modify matrix in-place instead.
        Rotates the given n x n matrix 90 degrees clockwise.
        """
        n = len(matrix)

        # Step 1: Transpose the matrix (swap matrix[i][j] with matrix[j][i])
        for i in range(n):
            for j in range(i + 1, n):
                matrix[i][j], matrix[j][i] = matrix[j][i], matrix[i][j]

        # Step 2: Reverse each row to complete the 90-degree rotation
        for row in matrix:
            row.reverse()

Complexity

  • Approach: Matrix Transpose + Row Reversal

  • Time complexity: O(n²)

    • We need to traverse the entire matrix, which has n² elements
  • Space complexity: O(1)

    • We only use a constant amount of extra space, modifying the matrix in-place

Comments

No comments yet. Be the first to comment!