Cho ma trận vuông n x n. Xoay ma trận 90 độ theo chiều kim đồng hồ.
Ví dụ: ma trận 3x3:
[[1,5,7],[9,6,3],[2,1,3]] → xoay thành [[2,9,1],[1,6,5],[3,3,7]].
Giải thuật
- Tạo ma trận tạm
temp_matrix. - Duyệt cột từ 0 đến n-1, với mỗi cột duyệt hàng từ n-1 xuống 0, lấy phần tử
matrix[row][col]đưa vào hàng mới củatemp_matrix. - Sao chép
temp_matrixngược lạimatrix.
Mã ví dụ
class Solution(object):
def rotate(self, matrix):
temp_matrix = []
column = len(matrix) - 1
for column in range(len(matrix)):
temp = []
for row in range(len(matrix)-1, -1, -1):
temp.append(matrix[row][column])
temp_matrix.append(temp)
for i in range(len(matrix)):
for j in range(len(matrix)):
matrix[i][j] = temp_matrix[i][j]
return matrix
ob1 = Solution()
print(ob1.rotate([[1,5,7],[9,6,3],[2,1,3]]))
Đầu vào
[[1,5,7],[9,6,3],[2,1,3]]
Đầu ra
[[2, 9, 1], [1, 6, 5], [3, 3, 7]]