Rotate Matrix by 90 Degrees
Understanding the Problem
The goal is to rotate a given square matrix by 90 degrees clockwise.
Method 1: Using a Temporary Matrix
This method uses a temporary matrix to store the rotated values.
def rotate_matrix(matrix):
n = len(matrix)
temp = [[0] * n for _ in range(n)]
# Store the rotated values in a temporary matrix
for i in range(n):
for j in range(n):
temp[j][n - 1 - i] = matrix[i][j]
# Copy the temporary matrix back to the original matrix
for i in range(n):
for j in range(n):
matrix[i][j] = temp[i][j]
def print_matrix(matrix):
for row in matrix:
print(" ".join(map(str, row)))
# Example usage
matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
rotate_matrix(matrix)
print("Rotated Matrix:")
print_matrix(matrix)
Output:
Rotated Matrix: 7 4 1 8 5 2 9 6 3
Method 2: In-Place Rotation
This method rotates the matrix in place without using extra space.
def rotate_matrix(matrix):
n = len(matrix)
# Transpose the matrix
for i in range(n):
for j in range(i, n):
matrix[i][j], matrix[j][i] = matrix[j][i], matrix[i][j]
# Reverse each row
for i in range(n):
matrix[i].reverse()
def print_matrix(matrix):
for row in matrix:
print(" ".join(map(str, row)))
# Example usage
matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
rotate_matrix(matrix)
print("Rotated Matrix:")
print_matrix(matrix)
Output:
Rotated Matrix: 7 4 1 8 5 2 9 6 3
Method 3: Using Layer by Layer Rotation
This method rotates the matrix layer by layer.
def rotate_matrix(matrix):
n = len(matrix)
for layer in range(n // 2):
first = layer
last = n - 1 - layer
for i in range(first, last):
offset = i - first
# Save the top element
top = matrix[first][i]
# Move left element to top
matrix[first][i] = matrix[last - offset][first]
# Move bottom element to left
matrix[last - offset][first] = matrix[last][last - offset]
# Move right element to bottom
matrix[last][last - offset] = matrix[i][last]
# Assign top element to right
matrix[i][last] = top
def print_matrix(matrix):
for row in matrix:
print(" ".join(map(str, row)))
# Example usage
matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
rotate_matrix(matrix)
print("Rotated Matrix:")
print_matrix(matrix)
Output:
Rotated Matrix: 7 4 1 8 5 2 9 6 3