695. 岛屿的最大面积

695. 岛屿的最大面积

  • 题号:力扣695
  • 知识点:DFS
  • 目标完成度:29/150
  • 总结
    题干:
    在这里插入图片描述
    在这里插入图片描述

思路:

  • 1.此题关键在于如何将上下左右相连的1建立关联,此处使用深度优先搜索(DFS)解决。
  • 2.首先使用双重循环遍历矩阵中的每个元素,如果该元素为1,则以该元素所在的位置为起点,进行深度优先搜索,找到与其相连的1,他们同属于一个岛屿,每次调用深度优先搜索的函数时,岛屿面积加一(ret[0]+=1
  • 3.每次深度优先搜索递归结束后,ret[0]的值就是该岛屿的面积。
  • 4.将最大的岛屿面积返回即为答案
# python
class Solution:
    def dfs(self, grid, r, c, ret):
        nr = len(grid)
        nc = len(grid[0])
        ret[0] += 1

        grid[r][c] = 0
        if r-1>=0 and grid[r-1][c] == 1: self.dfs(grid, r-1, c, ret)
        if r+1<nr and grid[r+1][c] == 1: self.dfs(grid, r+1, c, ret)
        if c-1>=0 and grid[r][c-1] == 1: self.dfs(grid, r, c-1, ret)
        if c+1<nc and grid[r][c+1] == 1: self.dfs(grid, r, c+1, ret)

    def maxAreaOfIsland(self, grid: List[List[int]]) -> int:
        max_s = 0
        if not len(grid):
            return 0
        for i in range(len(grid)):
            for j in range(len(grid[0])):
                if grid[i][j] == 1:
                    ret=[0]
                    # 传入的ret list类型,类似C++中的引用
                    self.dfs(grid, i, j, ret)
                    max_s = max(max_s, ret[0])
        return max_s

参考:
相似题目:leetcode:200. 岛屿数量及题解:leetcode:200. 岛屿数量题解

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值