📅  最后修改于: 2023-12-03 15:26:37.724000             🧑  作者: Mango
在给定的布尔矩阵中,我们定义一个区域是由一组相邻的 1
组成的,并且在这个区域中的每一个元素都彼此相连。你可以假设给定的矩阵是由 0
和 1
两种元素构成的。
我们要找到其中最大的区域,并返回该区域中 1
的数量。
一种常用的方法是使用深度优先搜索(DFS)。
思路如下:
1
的元素,将它当作起始点,利用 DFS 搜索与其相邻的所有 1
的元素,如果搜索到了新的 1
元素,将其标记为已访问,继续深度优先搜索。代码如下:
class Solution:
def maxAreaOfIsland(self, grid: List[List[int]]) -> int:
def dfs(i, j, grid):
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
return 1 + dfs(i+1,j,grid) + dfs(i-1,j,grid) + dfs(i,j+1,grid) + dfs(i,j-1,grid)
max_area = 0
for i in range(len(grid)):
for j in range(len(grid[0])):
if grid[i][j] == 1:
max_area = max(max_area,dfs(i,j,grid))
return max_area