题目描述
给定一个二维的 0-1 矩阵,其中 0 表示海洋,1 表示陆地。单独的或相邻的陆地可以形成岛 屿,每个格子只与其上下左右四个格子相邻。求最大的岛屿面积。
输入输出样例
输入是一个二维数组,输出是一个整数,表示最大的岛屿面积。
Input: [[1,0,1,1,0,1,0,1], [1,0,1,1,0,1,1,1], [0,0,0,0,0,0,0,1]]
Output: 6
题解
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[0].length||grid[i][j]==0){
return 0;
}
grid[i][j]=0; //防止重复计算
int count=1;
count+=dfs(grid,i+1,j);
count+=dfs(grid,i-1,j);
count+=dfs(grid,i,j+1);
count+=dfs(grid,i,j-1);
return count;
}
}
为了确保每个土地访问不超过一次,我们每次经过一块土地时,将这块土地的值置为 00