Python矩阵旋转90度
作者:XD / 发表: 2024年11月20日 04:03 / 更新: 2024年11月20日 04:06 / 编程笔记 / 阅读量:98
题目:
请编写一个函数 rotate_matrix_90
,将一个 n x n
的二维矩阵顺时针旋转 90 度,并返回旋转后的矩阵。
要求: 1. 原矩阵可以在原地修改,不需要额外的矩阵。 2. 使用 O(1) 的额外空间。
输入示例:
matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
输出示例:
[
[7, 4, 1],
[8, 5, 2],
[9, 6, 3]
]
提示:
1. 可以先对矩阵进行转置(行列互换),然后翻转每一行来实现旋转。
2. 该方法适用于 n x n
的矩阵。
解答示例代码:
def rotate_matrix_90(matrix):
n = len(matrix)
for i in range(n):
for j in range(i + 1, n):
matrix[i][j], matrix[j][i] = matrix[j][i], matrix[i][j]
for i in range(n):
matrix[i].reverse()
return matrix
if name == "main":
matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
result = rotate_matrix_90(matrix)
for row in result:
print(row)
代码解释:
- 转置矩阵:
- 使用双重循环。
- 对于每对
matrix[i][j]
和matrix[j][i]
,交换它们的值。 -
这样原地完成了矩阵的转置(行列互换)。
-
翻转每一行:
-
使用
reverse()
方法翻转每一行,使得矩阵完成 90 度顺时针旋转。 -
输入输出:
- 输入是一个二维矩阵,直接在原地修改。
- 输出时,可以选择直接打印矩阵的内容。
测试结果:
输入:
matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
输出:
[7, 4, 1]
[8, 5, 2]
[9, 6, 3]