Giả sử chúng ta có một ma trận 2D, biểu diễn một hình ảnh. Chúng ta phải xoay hình ảnh này 90 độ theo chiều kim đồng hồ. Vì vậy, nếu hình ảnh giống như
1 | 5 | 7 |
9 | 6 | 3 |
2 | 1 | 3 |
Sau đó, đầu ra sẽ là
2 | 9 | 1 |
1 | 6 | 5 |
3 | 3 | 7 |
Để giải quyết vấn đề này, chúng ta sẽ làm theo các bước sau -
- Xem xét temp_mat =[], col:=length của ma trận - 1
- cho col trong phạm vi từ 0 đến độ dài của ma trận
- tạm thời:=[]
- cho hàng trong phạm vi độ dài của ma trận - 1 xuống -1
- thêm ma trận [hàng, cột] trong tạm thời
- thêm nhiệt độ vào temp_mat
- cho tôi trong phạm vi từ 0 đến chiều dài của ma trận
- cho j trong phạm vi từ 0 đến độ dài của ma trận
- ma trận [i, j]:=temp_mat [i, j]
- cho j trong phạm vi từ 0 đến độ dài của ma trận
Ví dụ (Python)
Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -
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]]