给定一个包含了一些 0 和 1的非空二维数组?grid?, 一个?岛屿?是由四个方向 (水平或垂直) 的?1?(代表土地) 构成的组合。你可以假设二维矩阵的四个边缘都被水包围着。
找到给定的二维数组中最大的岛屿面积。(如果没有岛屿,则返回面积为0。)
dis/bfs的裸裸裸题。
自己搜索练的太少,以后要多练!
bfs版
class Solution {
public int maxAreaOfIsland(int[][] grid) {
int maxArea=0;
if(grid==null){
return 0;
}
for(int i=0;i<grid.length;++i){
for(int j=0;j<grid[0].length;++j){
if(grid[i][j]==1){
int area=dfs(grid,i,j);
maxArea=area>maxArea?area:maxArea;
}
}
}
return maxArea;
}
public int dfs(int[][] grid,int i,int j){
int area=1;
grid[i][j]=0;
int[] dx={0,0,-1,1};
int[] dy={-1,1,0,0};
for(int m=0;m<4;++m){
if(vaild(grid,i+dx[m],j+dy[m])&&grid[i+dx[m]][j+dy[m]]==1){
area+=dfs(grid,i+dx[m],j+dy[m]);
}
}
return area;
}
public boolean vaild(int[][] grid,int i,int j){
return i>=0&&i<grid.length&&j>=0&&j<grid[0].length;
}
}
[LeetCode]695. 岛屿的最大面积(DFS/BFS)
原文:https://www.cnblogs.com/coding-gaga/p/11241283.html