代码思路:
添加链接描述
由于第 1 步 D→A已经将 A 覆盖(导致 A丢失),此丢失导致最后第 4 步 A→B无法赋值。为解决此问题,考虑借助一个「辅助变量 tmp」预先存储 A,此时的旋转操作变为:
class Solution:
def rotate(self, matrix: List[List[int]]) -> None:
# 设矩阵行列数为 n
n = len(matrix)
# 起始点范围为 0 <= i < n // 2 , 0 <= j < (n + 1) // 2
# 其中 '//' 为整数除法
for i in range(n // 2):
for j in range((n + 1) // 2):
# 暂存 A 至 tmp
tmp = matrix[i][j]
# 元素旋转操作 A <- D <- C <- B <- tmp
matrix[i][j] = matrix[n - 1 - j][i]
matrix[n - 1 - j][i] = matrix[n - 1 - i][n - 1 - j]
matrix[n - 1 - i][n - 1 - j] = matrix[j][n - 1 - i]
matrix[j][n - 1 - i] = tmp