class Solution {
public:
int dfs(vector<vector<int>>& grid, int x, int y){
int sum=1;
int row=grid.size();
int col=grid[0].size();
//访问了该点就可以将grid置为0,防止重复
grid[x][y]=0;
vector<vector<int>> direction{{1,0},{-1,0},{0,1},{0,-1}};
for(int i=0;i<4;++i){
//分别向四个方向移动
int x1=x+direction[i][0];
int y1=y+direction[i][1];
//新的点不越界并且有土地
if(x1>=0 && x1<row && y1>=0 && y1<col && grid[x1][y1]==1)
sum+=dfs(grid,x1,y1);
}
return sum;
}
int maxAreaOfIsland(vector<vector<int>>& grid) {
int sum=0;
int row=grid.size();
int col=grid[0].size();
//遍历二维数组,从任意有土地的点开始dfs,在dfs中遍历过的点,在此不会再次遍历了,因为grid在dfs被置为0了
for(int i=0;i<row;++i)
for(int j=0;j<col;++j)
if(grid[i][j]==1)
sum=max(sum,dfs(grid,i,j));
return sum;
}
};
695. 岛屿的最大面积/C++
最新推荐文章于 2024-07-27 12:18:13 发布