类似于
代码实现
计算arr[i][j]所包含的面积,如果考虑到了就标记为0,在计算它的面积时候,也会用到上下左右传过来的值,将面积记录下来,知道遇到更大的面积值再重置
var maxAreaOfIsland = function (arr) {
var m = arr.length;
var n = arr[0].length;
var res = 0;
var brr = new Array(m).fill(0).map(() => new Array(n).fill(1));
for (var i = 0; i < m; i++) {
for (var j = 0; j < n; j++) {
if (arr[i][j] == 1) {
var value = f(i, j);
if(value > res){
res = value
}
}
}
}
return res;
function f(i, j) {
if (i < 0 || i >= m || j < 0 || j >= n) return 0;
var value = 0;
var num = arr[i][j];
var color = brr[i][j];
brr[i][j] = 0;
if (num && color) {
value += f(i + 1, j);
value += f(i - 1, j);
value += f(i, j + 1);
value += f(i, j - 1);
value++;
}
return value;
}
};
代码调试
var arr = [
[0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0],
[0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0],
[0, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0]
]
console.log(maxAreaOfIsland(arr));