美文网首页
695. 岛屿的最大面积(Python)

695. 岛屿的最大面积(Python)

作者: 玖月晴 | 来源:发表于2020-12-02 17:57 被阅读0次

    题目

    难度:★★★☆☆
    类型:数组
    方法:动态规划

    力扣链接请移步本题传送门
    更多力扣中等题的解决方案请移步力扣中等题目录

    给定一个包含了一些 0 和 1 的非空二维数组 grid 。

    一个 岛屿 是由一些相邻的 1 (代表土地) 构成的组合,这里的「相邻」要求两个 1 必须在水平或者竖直方向上相邻。你可以假设 grid 的四个边缘都被 0(代表水)包围着。

    找到给定的二维数组中最大的岛屿面积。(如果没有岛屿,则返回面积为 0 。)

    示例 1:

    [[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]]
    对于上面这个给定矩阵应返回 6。注意答案不应该是 11 ,因为岛屿只能包含水平或垂直的四个方向的 1 。

    示例 2:

    [[0,0,0,0,0,0,0,0]]
    对于上面这个给定的矩阵, 返回 0。

    解答

    使用深度优先搜索方法解决方格问题。

    每当遇到1,将该位置填充0,并遍历与之相邻的所有1,使用统计1出现的次数。

    class Solution:
        def maxAreaOfIsland(self, grid):
            rows, columes = len(grid), len(grid[0])
            def dfs(r, c):
                if 0 <= r < rows and 0 <= c < columes and grid[r][c] == 1:
                    grid[r][c] = 0
                    return 1 + dfs(r+1, c) + dfs(r-1, c) + dfs(r, c+1) + dfs(r, c-1)
                return 0
            return max(dfs(r, c) for r in range(rows) for c in range(columes))
    

    如有疑问或建议,欢迎评论区留言~

    有关更多力扣中等题的python解决方案,请移步力扣中等题解析

    相关文章

      网友评论

          本文标题:695. 岛屿的最大面积(Python)

          本文链接:https://www.haomeiwen.com/subject/ileuwktx.html