题目
https://leetcode-cn.com/problems/max-area-of-island

简析
这个题和深度优先搜索系列一岛屿数量(点我),也是迷宫类问题,复制那个代码略作修改就完事了。
- 岛屿数量是每有一片岛屿,count数+1;本题是对于遍历每一片岛屿,记录下这片岛屿个数。
- 增加一个max变量,如果本次count数大于max,max=count即可。
代码
class Solution {
public:
int mv[4][4]={{1,0},{-1,0},{0,1},{0,-1}};
int max=0;
int count;
int maxAreaOfIsland(vector<vector<int>>& grid) {
for(int i=0;i<grid.size();i++)
for(int j=0;j<grid[i].size();j++){
if(grid[i][j]==1){
grid[i][j]=2;
count=1;//每找到一片新岛屿,count重置为1,然后search看这片岛屿有多大
search(grid,i,j);
if(count>max) max=count;
}
}
return max;
}
void search(vector<vector<int>>& grid,int x,int y){
for(int i=0;i<4;i++){
int xx=x+mv[i][0];
int yy=y+mv[i][1];
if(xx>=0&&xx<grid.size()&&yy>=0&&yy<grid[xx].size()&&grid[xx][yy]==1){
grid[xx][yy]=2;
count++;
search(grid,xx,yy);
}
}
}
};
网友评论