【网格问题】leetcode659.岛屿的最大面积

461 篇文章 1 订阅
125 篇文章 2 订阅

题目:
给你一个大小为 m x n 的二进制矩阵 grid 。

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

岛屿的面积是岛上值为 1 的单元格的数目。

计算并返回 grid 中最大的岛屿面积。如果没有岛屿,则返回面积为 0。
在这里插入图片描述
在这里插入图片描述
解答:

class Solution:
    def maxAreaOfIsland(self, grid: List[List[int]]) -> int:
        directions=[[-1,0],[1,0],[0,-1],[0,1]]
        m=len(grid)
        n=len(grid[0])
        res=0
        def InArea(r,c):
            if 0<=r<m and 0<=c<n:
                return True
            else:
                return False
        #计算从(r,s)出发组成的岛屿面积
        def dfs(r,c):
            if not InArea(r,c):
                return 0
            if grid[r][c]!=1:
                return 0
            grid[r][c]=2
            return sum([dfs(r+dr,c+dc) for dr,dc in directions])+1

        for i in range(m):
            for j in range(n):
                if grid[i][j]==1:
                    tmp=dfs(i,j)
                    res=max(res,tmp)
        return res
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值