一次过了,但还需要总结
class Solution {
int res = 0;
int[][] visited;
public int maxAreaOfIsland(int[][] grid) {
if(grid.length==0||grid[0].length==0) return 0;
this.visited = new int[grid.length][grid[0].length];
for(int i=0; i<grid.length; i++){
for(int j=0; j<grid[0].length; j++){
if(grid[i][j]==1&&visited[i][j]!=1){
dfs(grid,i,j);
}
}
}
return res;
}
int dfs(int[][] grid, int i, int j){
if(i<0||i>=grid.length||j<0||j>=grid[0].length) return 0;
if(visited[i][j]==1) return 0;
if(grid[i][j]==0) return 0;
int tmp = 1;
visited[i][j] = 1;
tmp += dfs(grid,i,j+1) + dfs(grid,i,j-1)
+ dfs(grid,i+1,j) + dfs(grid,i-1,j);
res = Math.max(res,tmp);
return tmp;
}
}