这道题和求<岛屿的个数>那题差不多。
思路:回溯法求每个岛屿的面积,每次设置一个全局变量记录当前岛屿的面积,最后取最大面积。
class Solution:
def maxAreaOfIsland(self, grid: List[List[int]]) -> int:
def dfs(i,j):
if (not 0<=i<m) or (not 0<=j<n):
return 0
if grid[i][j]==0 or isvisited[i][j]==1:
return 0
isvisited[i][j]=1
result[0]+=1
dfs(i-1,j)
dfs(i,j-1)
dfs(i+1,j)
dfs(i,j+1)
return result[0]
if grid==[] or grid==[[]]:
return 0
m=len(grid)#行数
n=len(grid[0])#列数
isvisited=[[0 for i in range(n)] for j in range(m)]
result=[0]
result_list=[]
for i in range(m):
for j in range(n):
result_list.append(dfs(i,j))
result=[0]
return max(result_list)