順時針旋轉
- 題目描述
- 數據范圍
- 實現邏輯
- 代碼實現
題目描述
有一個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)