

其实和200题一样,只不过加一个size变量,每沉没一个岛,就进行深度优先遍历,count就+1,然后返回一个最大值
class Solution {
public int maxAreaOfIsland(int[][] grid) {
int result=0;
for(int i=0;i<grid.length;i++){
for(int j=0;j<grid[0].length;j++){
if(grid[i][j]==1){
int size=dfs(i,j,grid);
result=Math.max(result,size);
}
}
}
return result;
}
public int dfs(int i,int j,int[][] grid){
if(i<0||i>grid.length-1||j<0||j>grid[0].length-1||grid[i][j]==0){//发生越界,或为0,直接返回
return 0;
}
int size=1;
grid[i][j]=0;//沉没陆地
size=size+dfs(i-1,j,grid);//向上递归
size=size+dfs(i+1,j,grid);
size=size+dfs(i,j-1,grid);
size=size+dfs(i,j+1,grid);
return size;
}
}
网友评论