JavaScript中二进制矩阵中最近0的距离
二元矩阵是一个只包含 0 或 1 的数组。我们需要编写一个 JavaScript 函数,它接受一个二元矩阵作为唯一的参数。
我们的函数应该创建一个包含相同行数和列数的新矩阵,并且对于原始矩阵的每个元素,结果矩阵应该包含该元素与原始矩阵中距离 0 的最近距离。
我们必须记住,在计算距离时,它可以水平或垂直移动,而不是对角移动。并且保证矩阵至少包含一个 0。
例如 -
如果输入矩阵是 -
const arr = [[0, 0, 0]
[0, 1, 0]
[1, 1, 1]
];
那么输出矩阵应该是 -
const output = [[0, 0, 0]
[0, 1, 0]
[1, 2, 1]
];
示例
此代码将是 -
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));
控制台中的输出将是 -
[ [ 0, 0, 0 ], [ 0, 1, 0 ], [ 1, 2, 1 ] ]
以上是 JavaScript中二进制矩阵中最近0的距离 的全部内容, 来源链接: utcz.com/z/361658.html