Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> JavaScript

Xoay ma trận vuông trong JavaScript

Chúng ta cần viết một hàm JavaScript nhận vào một mảng các mảng cấp n × n (ma trận vuông). Hàm nên xoay mảng 90 độ (theo chiều kim đồng hồ). Điều kiện là phải làm tại chỗ (in-place) - không cấp phát mảng phụ nào.

Ví dụ:

Nếu mảng đầu vào là:

const arr = [    [1, 2, 3],    [4, 5, 6],    [7, 8, 9] ];

Thì mảng đã xoay nên trông như:

const output = [    [7, 4, 1],    [8, 5, 2],    [9, 6, 3], ];

Ví dụ

Dưới đây là mã nguồn:

const arr = [    [1, 2, 3],    [4, 5, 6],    [7, 8, 9] ]; const rotateArray = (arr = []) => {    for (let rowIndex = 0; rowIndex < arr.length; rowIndex += 1) {       for (let columnIndex = rowIndex + 1; columnIndex < arr.length;       columnIndex += 1) {          [             arr[columnIndex][rowIndex],             arr[rowIndex][columnIndex],          ] = [             arr[rowIndex][columnIndex],             arr[columnIndex][rowIndex],          ];       }    }    for (let rowIndex = 0; rowIndex < arr.length; rowIndex += 1) {       for (let columnIndex = 0; columnIndex < arr.length / 2;       columnIndex += 1) {          [             arr[rowIndex][arr.length - columnIndex - 1],             arr[rowIndex][columnIndex],          ] = [             arr[rowIndex][columnIndex],             arr[rowIndex][arr.length - columnIndex - 1],          ];       }    } }; rotateArray(arr); console.log(arr);

Kết quả

Đầu ra trên console:

[ [ 7, 4, 1 ], [ 8, 5, 2 ], [ 9, 6, 3 ] ]

Giải thích: Xoay 90° clockwise = Transpose (đổi hàng/cột) + Reverse each row (đảo ngược mỗi hàng). Code làm đúng 2 bước này in-place.