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

Khoảng cách đến 0 gần nhất trong ma trận nhị phân bằng JavaScript


Ma trận nhị phân là mảng các mảng chỉ chứa 0 hoặc 1. Cần viết hàm JS nhận ma trận nhị phân, tạo ma trận mới cùng kích thước, mỗi phần tử chứa khoảng cách đến 0 gần nhất trong ma trận gốc. Di chuyển ngang/dọc (không chéo). Đảm bảo ma trận có ít nhất một 0.

Ví dụ:

Nếu ma trận đầu vào:

const arr = [    [0, 0, 0]    [0, 1, 0]    [1, 1, 1] ];

Ma trận kết quả:

const output = [    [0, 0, 0]    [0, 1, 0]    [1, 2, 1] ];

Ví dụ

Mã thực hiện:

const arr = [    [0, 0, 0],    [0, 1, 0],    [1, 1, 1], ]; const findNearestDistance = (arr = []) => {    let array = [];    let res = arr.map((el, ind) => el.map((subEl, subInd) => {       if (subEl === 0) {          array.push([ind, subInd])          return 0       };       return Number.MAX_SAFE_INTEGER;    }));    const updateAdjacent = (ind, subInd, min, array = []) => {       if (ind < 0 || subInd < 0 || ind == arr.length || subInd == arr[0].length){          return;       };       if (res[ind][subInd] < min + 2) return          res[ind][subInd] = min + 1          array.push([ind, subInd])    };    while (array.length) {       let next = []       for (let [ind, subInd] of array) {          updateAdjacent(ind, subInd + 1, res[ind][subInd], next)          updateAdjacent(ind, subInd - 1, res[ind][subInd], next)          updateAdjacent(ind + 1, subInd, res[ind][subInd], next)          updateAdjacent(ind - 1, subInd, res[ind][subInd], next)       };       array = next;    }    return res; }; console.log(findNearestDistance(arr));

Kết quả

Kết quả in ra console:

[ [ 0, 0, 0 ], [ 0, 1, 0 ], [ 1, 2, 1 ] ]