695. 岛屿的最大面积
解法:DFS
为了确保每个土地访问不超过一次,每次遍历过一块土地时,将这块土地的值置为 0。这样就不会多次访问同一土地。
class Solution {
public:
int maxAreaOfIsland(vector<vector<int>>& grid) {
int ans=0;
for(int i=0;i<grid.size(); i++) {
for(int j=0;j<grid[0].size();j++) {
ans=max(ans, dfs(grid,i,j));
}
}
return ans;
}
int dfs(vector<vector<int>>& grid, int x, int y) {
if (x<0 || y<0 || x>=grid.size() || y>=grid[0].size() || grid[x][y]!=1) {
return 0;
}
grid[x][y] = 0;
int dx[4]={0,0,1,-1};
int dy[4]={1,-1,0,0};
int ans=1;
for (int i=0;i<4;i++) {
int mx=x+dx[i], my=y+dy[i];
ans+=dfs(grid, mx, my);
}
return ans;
}
};