矩阵顺时针旋转等价于:
1.先将矩阵进行上下翻转:swap(matrix[i][j], matrix[row-i-1][j])
2.再求转置:swap(matrix[i][j], matrix[j][i])
同样的,矩阵逆时针旋转等价于:
1.先将矩阵进行左右翻转:swap(matrix[i][j], matrix[i][column-j-1])
2.再求转置:swap(matrix[i][j], matrix[j][i])
class Solution(object):
def rotate(self, matrix):
"""
:type matrix: List[List[int]]
:rtype: None Do not return anything, modify matrix in-place instead.
"""
row, column = len(matrix), len(matrix[0])
# 先上下对调
for i in range(row//2):
for j in range(column):
temp = matrix[i][j]
matrix[i][j] = matrix[row - i - 1][j]
matrix[row - i - 1][j] = temp
# T
for i in range(row):
for j in range(i+1, column):
temp = matrix[i][j]
matrix[i][j] = matrix[j][i]
matrix[j][i] = temp
return matrix