剑指 Offer II 105. 岛屿的最大面积

147 阅读1分钟

剑指 Offer II 105. 岛屿的最大面积

类似于

221. 最大正方形

image.png

代码实现

计算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));

image.png