leetcode-695

这题典型的搜索,是深度还是广度,这就随便了。我觉得深度比较合适一点,这数据也不大。

package leetcode

func maxAreaOfIsland(grid [][]int) int {
    if len(grid) == 0 || len(grid[0]) == 0 {
        return 0
    }
    res := 0
    for r := 0; r < len(grid); r++ {
        for c := 0; c < len(grid[0]); c++ {
            if grid[r][c] == 1 {
                a := area(grid, r, c)
                res = max(a, res)
            }
        }
    }
    return res
}

func max(a, b int) int {
    if a > b {
        return a
    }
    return b
}

func area(grid [][]int, r int, c int) int {
    if !(0 <= r && r < len(grid) && 0 <= c && c < len(grid[0])) {
        return 0
    }
    if grid[r][c] != 1 {
        return 0
    }
    grid[r][c] = 2
    return 1 + area(grid, r - 1, c) + area(grid, r + 1, c) + area(grid, r, c - 1) + area(grid, r, c + 1)
}

end

一个没有高级趣味的人。 email:hushui502@gmail.com
原文地址:https://www.cnblogs.com/CherryTab/p/12500872.html