题目解法classSolution:defrotate(self,matrix:List[List[int]])-None: Do not return anything, modify matrix in-place instead. #这是一个n行n列的矩阵nlen(matrix)#只需要遍历n/2行foriinrange(n//2):#每一列从i开始直到n-i-1forjinrange(i,n-i-1):#每一轮变化过程是4个元素的旋转tempmatrix[i][j]#假设matrix[i][j]位于左上角的元素#那么这个位置会被左下角的元素替换即 matrix[n - j - 1][i] 来到这个位置matrix[i][j]matrix[n-j-1][i]# 左下⻆元素被右下⻆的元素替换即 matrix[n - i - 1][n - j - 1] 来到这个位置matrix[n-j-1][i]matrix[n-i-1][n-j-1]# 右下⻆元素被右上⻆的元素替换即 matrix[j][n - i - 1] 来到这个位置matrix[n-i-1][n-j-1]matrix[j][n-i-1]# 右上⻆元素被左上⻆的元素替换即 matrix[i][j] 来到这个位置matrix[j][n-i-1]temp图解旋转图像基本图解1图解2图解3注意旋转图的位置(同颜色代表同一波一起旋转的)图解3最终一起旋转的一波图像图解4以此类推会发现如果是44那么就是4个一组如果是nn那么就是n个一组图解5那么在同一拨图像中只要访问其中的一个就会得能同时移动剩下的图像若是4*4访问1个图像能一起旋转3个那么以4*4的图像为例只要访问下面红色的部分就能旋转整张图图解6现在将此规律推广到nn现在将矩阵放大为88同样访问整个红色的元素整个矩阵的元素都会旋转推广就是第一行8-1第二行8-2反过来想如果是第i行那么红色部分后面的黄色就有i1个元素