
本质是矩阵转置90°
其实就是
- 先沿「水平轴」翻转(上下翻转)
- 再沿「左上 → 右下轴」翻转(主对角线翻转)
例如:
python
[[1, 2],
[3, 4]]
先沿「水平轴」翻转(上下翻转)
python
[[3, 4],
[1, 2]]
再沿「左上 → 右下轴」翻转(主对角线翻转)
python
[[3, 1],
[4, 2]]
python
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(n//2):
matrix[i], matrix[n - 1 - i] = matrix[n - 1 - i], matrix[i]
# 沿「左上 → 右下轴」翻转(主对角线翻转)
for i in range(n):
for j in range(i + 1, n): # 只取上半部分
matrix[i][j], matrix[j][i] = matrix[j][i], matrix[i][j] # 与下半部分翻转