顺时针旋转
题目描述
有一个NxN整数矩阵,请编写一个算法,将矩阵顺时针旋转90度。给定一个NxN的矩阵,和矩阵的阶数N,请返回旋转后的NxN矩阵。
数据范围
0<n<300,矩阵中的值满足 0≤val≤1000
实现逻辑
-
行列转换
''' 1 2 3 7 4 1 4 5 6 --> 8 5 2 7 8 9 9 6 3 ''' # 第N列逆序后变成第N行 # 或者是第 i 行变成第 N - i - 1 列
代码实现
python
class Solution:
# 列转换为行
def line2Row(self, mat, n):
arr = []
for line in range(n):
tmp = []
# 第line列
for row in range(n):
tmp.append(mat[row][line])
arr.append(tmp[::-1])
return arr
# 行转换为列
def row2Line(self, mat, n):
arr = [[0] * n for _ in range(n)]
for row in range(n):
for line in range(n):
# 行列转换
arr[line][n - 1 -row] = mat[row][line]
return arr
def rotateMatrix(self , mat: List[List[int]], n: int) -> List[List[int]]:
# write code here
'''
1 2 3 7 4 1
4 5 6 --> 8 5 2
7 8 9 9 6 3
'''
# 第N列逆序后变成第N行
arr = self.row2Line(mat, n)
return arr
arr, n = [[1,2,3],[4,5,6],[7,8,9]],3
s = Solution()
res = s.rotateMatrix(arr)
print(res)