思路一:
将矩阵竖着解构,如 [[1,2,3],[4,5,6],[7,8,9]] 解构成 [[1,4,7],[2,5,8],[3,6,9]],将每个部分逆序即可。
代码如下:
from typing import List
class Solution:
def rotate(self, matrix: List[List[int]]) -> None:
"""
Do not return anything, modify matrix in-place instead.
"""
matrix[:] = [row[::-1] for row in zip(*matrix)]
思路二:
先将矩阵沿主对角线翻转,如 [[1,2,3],[4,5,6],[7,8,9]] 翻转成 [[1,4,7],[2,5,8],[3,6,9]],再左右翻转,如 [[1,4,7],[2,5,8],[3,6,9]] 翻转成 [[7,4,1],[8,5,2],[9,6,3]]。
代码如下:
from typing import List
class Solution:
def rotate(self, matrix: List[List[int]]) -> None:
"""
Do not return anything, modify matrix in-place instead.
"""
length = len(matrix)
'''主对角线翻转'''
for i in range(length):
for j in range(i, length):
matrix[i][j], matrix[j][i] = matrix[j][i], matrix[i][j]
'''左右翻转'''
for i in range(length):
for j in range(length // 2):
matrix[i][j], matrix[i][length - j - 1] = matrix[i][length - j - 1], matrix[i][j]