Giả sử chúng ta có một ma trận 2D, đại diện cho một hình ảnh. Chúng ta phải xoay hình ảnh này 90 độ theo chiều kim đồng hồ. Ví dụ, nếu hình ảnh là:
| 1 | 5 | 7 |
| 9 | 6 | 3 |
| 2 | 1 | 3 |
Kết quả sẽ là:
| 2 | 9 | 1 |
| 1 | 6 | 5 |
| 3 | 3 | 7 |
Để giải quyết, chúng ta làm theo các bước sau:
- Xét
temp_mat = [],col := độ dài ma trận - 1. - Với
coltừ 0 đến độ dài ma trận:temp := [].- Với
rowtừ độ dài ma trận - 1 giảm xuống -1:- Thêm
matrix[row][col]vàotemp.
- Thêm
- Thêm
tempvàotemp_mat.
- Với
itừ 0 đến độ dài ma trận:- Với
jtừ 0 đến độ dài ma trận:matrix[i][j] := temp_mat[i][j].
- Với
Ví dụ (Python)
Xem 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]]