记录DFS:算二维数组最大岛屿
结合代码和注解学习思路
class Solution {
public int maxAreaOfIsland(int[][] grid) {
int ans=0;
//遍历整块区域
for(int i=0;i<grid.length;i++){//对行的判断
for(int j=0;j<grid[0].length;j++){//对列的判断
ans=Math.max(ans,dfs(grid,i,j));//算出最大的面积
}
}
return ans;
}
public int dfs(int[][]grid,int i,int j){
//下面这一段力扣官方解读更加清晰,可以去看视频
if(i<0 || j<0 || i==grid.length || j==grid.length || grid[i][j]!=1){//首先判断不满足条件就返回0
return 0;
}
//接下来就是满足条件后
grid[i][j]=0;
//在陆地上,将陆地置位0,让从4个方向上递归,返回4个方向上的和作为结果
return 1+dfs(grid,i-1,j)+dfs(grid,i+1,j)+dfs(grid,i,j-1)+dfs(grid,i,j+1);
}
}