48. Rotate Image
Tags:
Medium
Skills:
Matrix
June 24, 2025
04:32 AM
No headings found
Loading content...
Related Posts
Leetcode
No headings found
Related Posts
Leetcode
Problem
Cần thực hiện xoay matrix hình vuông n * n 90 độ theo chiều kim đồng hồ
Approach
Cách làm tối ưu và phổ biến là:
Solution
1/**
2 Do not return anything, modify matrix in-place instead.
3 */
4function rotate(matrix: number[][]): void {
5 const n = matrix.length;
6 for(let i = 0; i < n; i++) {
7 for(let j = i + 1; j < n; j++) {
8 [matrix[i][j], matrix[j][i]] = [matrix[j][i], matrix[i][j]];
9 }
10 }
11
12 for(let i= 0; i < n; i++) {
13 matrix[i].reverse();
14 }
15};Vòng lặp này dùng để hoán đổi các phần tử đối xứng qua đường chéo chính (transpose ma trận). Đường chéo chính là các phần tử có chỉ số hàng = chỉ số cột, tức là [i][i].
Tại sao không dùng j = 0 ?
Nếu bạn dùng j = 0 bạn sẽ
i = a, j = b bạn đã hoán đổi [a][b] với [b][a], sau đó khi i = b, j = a lại hoán đổi ngược lại, dẫn đến trở về trạng thái ban đầu).Dùng j = i + 1 giải quyết vấn đề gì?