import java.util.*; public class Solution { public int maxAreaIsland (int[][] grid) { //边界条件判断 if(grid==null||grid.length==0) return 0; int Smax=0; //记录岛屿的最大面积 //两个for循环遍历每一个格子 for(int i=0;i<grid.length;i++){ for(int j=0;j<grid[0].length;j++){ if(grid[i][j]==1){ int S=dfs(grid,i,j);//记录当前岛屿的面积 Smax=Math.max(Smax,S); } } } return Smax; } //这个方法把当前格子以及他邻近为1的格子都置为0 public int dfs(int[][] grid,int i,int j){ //边界条件判断,不能越界 if(i<0||i>=grid.length||j<0||j>=grid[0].length||grid[i][j]==0) return 0; grid[i][j]=0; return dfs(grid,i-1,j)+dfs(grid,i+1,j)+dfs(grid,i,j-1)+dfs(grid,i,j+1)+1; } }