顺时针旋转
- 题目描述
- 数据范围
- 实现逻辑
- 代码实现
题目描述
有一个NxN整数矩阵,请编写一个算法,将矩阵顺时针旋转90度。给定一个NxN的矩阵,和矩阵的阶数N,请返回旋转后的NxN矩阵。
数据范围
0<n<300,矩阵中的值满足 0≤val≤1000
实现逻辑
-
行列转换
'''1 2 3 7 4 14 5 6 --> 8 5 27 8 9 9 6 3 '''# 第N列逆序后变成第N行# 或者是第 i 行变成第 N - i - 1 列
代码实现
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 14 5 6 --> 8 5 27 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)