《Leetcode of October 》695.岛屿的最大面积

128 篇文章 0 订阅
14 篇文章 0 订阅

class Solution:
    def helper(self,grid,i,j):
        
        if i<0 or j<0 or i>=len(grid) or j>=len(grid[0]) or grid[i][j]==0:
            return 0
        grid[i][j]=0
        count=1
        tmp = [[1,0],[-1,0],[0,1],[0,-1]]
        for x,y in tmp:
            dx = x+i
            dy = y+j
            count+=self.helper(grid,dx,dy)
        
        return count

    def maxAreaOfIsland(self, grid: List[List[int]]) -> int:
        res = 0 
        for i in range(len(grid)):
            for j in range(len(grid[0])):
                if grid[i][j]==1:
                    
                    tmp = self.helper(grid,i,j)
                    res = max(tmp,res)
        
        return res

 这个题目的简单版本就是求解有多少个岛屿,也就是有多少个连通的1,不管用DFS和BFS都可以进行求解。这个题目就是在岛屿数量基础上加了一个面积的计算,那么一个岛屿都是以单位面积为1的正方形拼接起来的几何图形,所以每次在计算岛屿数量的过程中把出现多少个正方形的和计算起来就可以了,这个多少正方形也就是指的面积是多少,然后不断更新最大面积就可以求出最大面积的岛屿了。

总结:岛屿问题近乎都是可以采用DFS和BFS进行求解的,不过有时候稍微进行一些变体,大的方向都是完全相同的。都是采用基本的模板。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值