思路
先找到从外到内一共几层,每层旋转当前层的n-1个数,就将每个数都与固定位置的数进行顺时针替换即可。
代码
class Solution:
def rotate(self, matrix: List[List[int]]) -> None:
"""
Do not return anything, modify matrix in-place instead.
"""
n=len(matrix[0])#找到矩阵的n
layers=n//2#找到一共有多少层
for k in range(layers):#对每一层进行旋转
#分别用旋转后的位置对第一行每个元素进行替换,比如1-10-12-13分别换到1的位置
for j in range(n-2*k-1):# 这里需要注意下,每次旋转只有前n-1个,n指每个小矩阵的n
i=j+k #让每一层的索引都从加上层数开始
matrix[i][n-1-k],matrix[k][i]=matrix[k][i],matrix[i][n-1-k]
matrix[n-1-k][n-1-i],matrix[k][i]=matrix[k][i],matrix[n-1-k][n-1-i]
matrix[n-1-i][k],matrix[k][i]=matrix[k][i],matrix[n-1-i][k]