class Solution {
public:
int H, W;
int dfs(int y, int x, vector<vector<int>>& grid, vector<vector<bool>>& visited) {
if(y < 0 || y >= H || x < 0 || x >= W || visited[y][x] || !grid[y][x]) return 0;
visited[y][x] = true;
return dfs(y-1, x, grid, visited) + dfs(y+1, x, grid, visited) + dfs(y, x-1, grid, visited) + dfs(y, x+1, grid, visited) + 1;
}
int maxAreaOfIsland(vector<vector<int>>& grid) {
H = grid.size(), W = grid[0].size();
vector<vector<bool> > visited(H, vector<bool>(W, false));
int maximum = 0;
for(int y = 0; y < H; y++) {
for(int x = 0; x < W; x++) {
if(!visited[y][x] && grid[y][x]) maximum = max(maximum, dfs(y, x, grid, visited));
}
}
return maximum;
}
};
【leetcode 深度优先搜索 C++】695. Max Area of Island
最新推荐文章于 2024-10-16 00:00:43 发布