每日一题_打卡9.14
一、leetcode695. 岛屿的最大面积
给你一个大小为 m x n 的二进制矩阵 grid 。
岛屿 是由一些相邻的 1 (代表土地) 构成的组合,这里的「相邻」要求两个 1 必须在 水平或者竖直的四个方向上 相邻。你可以假设 grid
的四个边缘都被 0(代表水)包围着。岛屿的面积是岛上值为 1 的单元格的数目。
计算并返回 grid 中最大的岛屿面积。如果没有岛屿,则返回面积为 0 。
这里用到了dfs深度优先搜索,从某一个开始,向四周进行搜索,超过边界和值为0的返回,并将数过的值重新设定,以防二次计数。
class Solution {
public int maxAreaOfIsland(int[][] grid) {
//image
int count = 0;
for (int i = 0; i < grid.length; i++) {
for (int j = 0; j < grid[0].length; j++) {
count = Math.max(count, dfs(grid, i, j));
}
}
return count;
}
private int dfs(int[][] grid,int m ,int n) {
int count= 1;
if(m>=grid.length || m<0|| n>=grid[0].length||n<0 || grid[m][n] ==0 ){
return 0 ;
}
grid[m][n] = 0;
int a [] ={0,1,-1,0};
int b [] ={1,0,0,-1};
for(int i = 0;i<4;i++){
int next_i = m+a[i],next_j = n+b[i];
count += dfs(grid,next_i,next_j);
}
return count;
}
}