07. tháng 2 2025
Bạn được cho một ma trận hai chiều kích thước n x n đại diện cho một hình ảnh, hãy u88 casino xoay hình ảnh đó 90 độ theo chiều kim đồng hồ. Bạn phải thực hiện việc xoay hình ảnh tại chỗ (in-place), nghĩa là bạn phải sửa đổi trực tiếp ma trận hai chiều đã cho làm đầu vào. KHÔNG ĐƯỢC phân bổ thêm một ma trận hai chiều khác và thực hiện phép xoay.
![Hình ảnh minh họa, bài toán này mình đã từng giải quyết trước đây, ban đầu nhìn có vẻ hơi mơ hồ, quy tắc thì dễ miêu tả nhưng viết mã code lại khá phức tạp. Cần phải áp dụng một số kèo nhà cái kỹ thuật đặc biệt, chẳng hạn như lật ngược.]
Đây là đoạn mu88 mu88 casino mã:
public void rotate(int[][] matrix) {
int lengthX = matrix[0].length;
int lengthY = matrix.length;
int temp;
// Lặp qua phần trên của ma trận để hoán đổi các phần tử tương ứng
for (int i = 0; i < (lengthY - (lengthY % 2)) / 2; i++) {
for (int j = 0; j < lengthX; j++) {
temp = matrix[i][j];
matrix[i][j] = matrix[lengthY-i-1][j];
matrix[lengthY-i-1][j] = temp;
}
}
// Sau khi hoàn thành bước lật dọc, ta tiến hành đổi chéo theo đường chéo chính
for (int i = 0; i < lengthX; i++) {
for (int j = 0; j <= i; j++) {
if (i == j) {
continue;
}
temp = matrix[i][j];
matrix[i][j] = matrix[j][i];
matrix[j][i] = temp;
}
}
}