题目:给定一个包含了一些 0 和 1 的非空二维数组 grid 。
一个 岛屿 是由一些相邻的 1 (代表土地) 构成的组合,这里的「相邻」要求两个 1 必须在水平或者竖直方向上相邻。你可以假设 grid 的四个边缘都被 0(代表水)包围着。
找到给定的二维数组中最大的岛屿面积。(如果没有岛屿,则返回面积为 0 。)
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/max-area-of-island
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
DFS暴力破解:
int dfs(int row,int col,int** grid, int gridSize, int* gridColSize){
if(row<0||row>=gridSize||col<0||col>=*gridColSize||grid[row][col]==0){
return 0;
}
grid[row][col]=0;
int count =1;
count += dfs(row-1,col,grid, gridSize, gridColSize);
count += dfs(row+1,col,grid, gridSize, gridColSize);
count += dfs(row,col-1,grid, gridSize, gridColSize);
count += dfs(row,col+1,grid, gridSize, gridColSize);
return count;
}
int maxAreaOfIsland(int** grid, int gridSize, int* gridColSize){
int result=0;
for(int i=0;i<gridSize;i++){
for(int j=0;j< *gridColSize;j++){
if(grid[i][j]==1){
const int result_temp = dfs(i,j,grid,gridSize,gridColSize);
result = (result<result_temp)?result_temp:result;
}
}
}
return result;
}