作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
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/
我是不是对 lambda 不了解?或者 GetValue() 我试图传递的变量是空的。最好为此创建一个 global palletNumberText 吗?在 createWidgets() 中,我绑
我是一名优秀的程序员,十分优秀!