题目描述:
思路:
方阵的旋转可以通过外层环形交换和内层环形交换完成,n维方阵只需要对n/2个环进行交换即可。matrix[i][j]是每个环交换的起点,由0行开始,n/2行完成后所有交换完成,每层第一个环的起点都从对角线位置开始。
代码:
class Solution:
def rotate(self, matrix: List[List[int]]) -> None:
"""
Do not return anything, modify matrix in-place instead.
"""
n = len(matrix) - 1
for i in range((n+2) // 2):
for j in range(i, n-i):
tep = matrix[i][j]
matrix[i][j] = matrix[n-j][i]
matrix[n-j][i] = matrix[n-i][n-j]
matrix[n-i][n-j] = matrix[j][n-i]
matrix[j][n-i] = tep