gpt4 book ai didi

javascript - 岛数二维数组算法

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:10:53 25 4
gpt4 key购买 nike

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

我有一个数组,其中 1 岛和 0 水。我需要写一个岛柜台。这里有 2 个岛 1 个大和 1 个小(单人)。例如这里有 5 个单岛

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

我写了双循环来吸引数组中的每个项目,如下所示:

for(let i = 0; i < arr.length; i++){
for(let x = 0; x < arr[i].length; x++){
if(...){}
}
}

我需要为此编写条件。请帮助我。

最佳答案

您可以使用计数器并检查所有相邻项目并使用实际计数器更新元素。

function check(array) {

function test(array, i, j, value) {
if (array[i] && array[i][j] === -1) {
array[i][j] = value;
test(array, i -1, j, value);
test(array, i + 1, j, value);
test(array, i, j - 1, value);
test(array, i, j + 1, value);
return true;
}
}
var value = 1;

array.forEach(a=> a.forEach((b, i, bb) => bb[i] = -b));
array.forEach((a, i, aa) => a.forEach((b, j) => test(aa, i, j, value) && value++));
document.getElementById('out').innerHTML += array.map(a => a.join(' ')).join('\n') + '<hr>';
return value - 1;
}

console.log(check([[1, 0, 1], [1, 0, 0], [1, 1, 1]]));
console.log(check([[1, 0, 1], [0, 1, 0], [1, 0, 1]]));
<pre id="out"></pre>

关于javascript - 岛数二维数组算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47727775/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com