## Rotate Image

###### DESCRIPTION (credit Leetcode.com)

Write a function to rotate an n x n 2D matrix representing an image by 90 degrees clockwise. The rotation must be done in-place, meaning you should modify the input matrix directly without using an additional matrix for the operation.

###### EXAMPLES

Input:

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

Output:

`[ [3,2,1], [6,5,4], [9,8,7] ]`

Explanation: The matrix is rotated by 90 degrees clockwise, transforming its columns into rows in reverse order.

Run your code to see results here

## Explanation

This problem can be done in two steps. We first transpose the matrix, then reverse the elements in each row.

#### Step 1:

Transpose the matrix by swapping the elements across the diagonal. This can be done in-place by using a nested for loop to swap the elements.

def rotate_image(matrix):n = len(matrix)# Transpose the matrixfor i in range(n):for j in range(i, n):matrix[i][j], matrix[j][i] = \matrix[j][i], matrix[i][j]# Reverse each rowfor i in range(n):matrix[i] = matrix[i][::-1]return matrix

#### Step 2:

Reverse the elements in each row of the matrix.

def rotate_image(matrix):n = len(matrix)# Transpose the matrixfor i in range(n):for j in range(i, n):matrix[i][j], matrix[j][i] = \matrix[j][i], matrix[i][j]# Reverse each rowfor i in range(n):matrix[i] = matrix[i][::-1]return matrix

## Solution

def rotate_image(matrix):n = len(matrix)# Transpose the matrixfor i in range(n):for j in range(i, n):matrix[i][j], matrix[j][i] = \matrix[j][i], matrix[i][j]# Reverse each rowfor i in range(n):matrix[i] = matrix[i][::-1]return matrix

## Complexity Analysis

**Time Complexity**: O(n2) where n is the number of rows in the matrix.
**Space Complexity**: O(1) since we are doing the rotation in-place.

Loading comments...