LeetCode 695. 岛屿的最大面积 Python 题解 递归实现DFS
题目分析
题目要求概述:
LeetCode 695. 岛屿的最大面积给定一个包含了一些 0 和 1 的非空二维数组 grid 。
题目规定:一个 岛屿是由一些相邻的 1构成的组合,并且要求两个 1 必须在水平或者竖直方向上相邻。
最终需要返回给定的二维数组中最大的岛屿面积。如果没有岛屿,则返回面积为 0 。
算法基本思路:
-
通过递归实现DFS深度优先搜索算法,对每个节点向他的上下左右的4 个方向探索与之相连的每一个土地,并将该块土地的值加和。
-
为了避免多次访问同一块土地,将搜索过的土地的值置为 0。
-
不过因为遍历到节点时是先进行置0再求和,所以在求和的过程中需要特别注意不要忘记把当前节点的1加进去。
-
最终遍历数组,调用之前定义的DFS函数,求出当前节点可构成的最大岛屿面积,然后根据题目要求返回其中的最大值就可以了。
Python代码
def maxAreaOfIsland(self, grid):
def dfs(grid,i,j):