在原有岛屿问题阶梯框架的基础上,加一点变通
将DFS方法改成返回淹没的岛屿数量,进行递归,最后取最大值即可
class Solution {
public int maxAreaOfIsland(int[][] grid) {
int res = 0;
int m = grid.length;
int n = grid[0].length;
int r = 0;
for(int i = 0;i<m;i++){
for(int j = 0;j<n;j++){
if(grid[i][j] == 1){
res = Math.max(res,DFS(grid,i,j));
}
}
}
return res;
}
int DFS(int[][] grid,int i,int j){
int m = grid.length;
int n = grid[0].length;
if(i<0||j<0||i>=m||j>=n){
return 0;
}
if(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;
}
}