岛屿的最大面积
Max Area of Island
本机进度仅保存在当前浏览器
题目描述
给你一个大小为 m x n 的二进制矩阵 grid,岛屿由一些相邻的 1 组成(只考虑上下左右方向),求岛屿的最大面积(即格子数最多的岛屿的格子数)。
示例:grid = [[0,0,1,0,0,0,0,1,0,0,0,0,0], ...],最大岛屿面积为 6。
解题思路
- 与"岛屿数量"同一框架:DFS 求连通分量,只是这次要返回分量大小。
- 递归函数返回以当前格为起点的面积:自身 1 + 四个方向合法陆地面积之和;访问过的格子标记为 0 防止重复计数。
- 全局扫描取最大值。
参考实现
查看参考实现Python · 建议先自行作答
def maxAreaOfIsland(grid):
m, n = len(grid), len(grid[0])
def dfs(i, j):
if not (0 <= i < m and 0 <= j < n) or grid[i][j] != 1:
return 0
grid[i][j] = 0
# 自身 + 四方向子面积
return 1 + dfs(i + 1, j) + dfs(i - 1, j) + dfs(i, j + 1) + dfs(i, j - 1)
return max((dfs(i, j) for i in range(m) for j in range(n)), default=0)