想到把旋转转换成两次镜像翻转就很容易了。
class Solution:
def rotate(self, matrix: List[List[int]]) -> None:
"""
Do not return anything, modify matrix in-place instead.
"""
# 原地旋转转变成两次的镜像翻转,就不需要消耗额外的矩阵空间
row = len(matrix)
col = len(matrix[0])
# 沿着主对角线翻转
for i in range(row-1):
for j in range(i+1, col):
matrix[j][i], matrix[i][j] = matrix[i][j],matrix[j][i]
# 左右对折
for i in range(row):
for j in range(col//2):
matrix[i][col-j-1],matrix[i][j] = matrix[i][j],matrix[i][col-j-1]
具体可看链接官方解析