题目
给你一幅由 N × N 矩阵表示的图像,其中每个像素的大小为 4 字节。请你设计一种算法,将图像旋转 90 度。
不占用额外内存空间能否做到?
思路

设位于左上角的位置坐标为(i,j)
| N = 4 | 左上 | 右上 | 右下 | 左下 |
|---|---|---|---|---|
| 旋转前的坐标 | (0, 1) | (1, 3) | (3,2) | (2, 0) |
| 旋转后的坐标 | (1, 3) | (3, 2) | (2,0) | (0, 1) |
| 抽象后 | (i, j) | (j, n - i - 1) | (n - i - 1, n - j - 1 | (n - j - 1, i) |
一圈一圈地互换位置

class Solution:def rotate(self, matrix:List[List[int]]) -> None:"""Do not return anything, modify matrix in-place instead."""n = len(matrix)for i in range(0, n // 2):for j in range(0, (n + 1) // 2): #考虑n为奇数,比如5,需要枚举(n + 1)/2个位置temp = matrix[i][j]matrix[i][j] = matrix[n - j - 1][i]matrix[n - j - 1][i] = matrix[n - i - 1][n - j - 1]matrix[n - i - 1][n - j - 1] = matrix[j][n - i - 1]matrix[j][n - i - 1] = temp
