/*
* 思路是这样:
* 遍历每一个单位点,如果遇到陆地就开始dfs并计岛屿面积:将与这个陆地相连的所有陆地标记为0
* 最后返回面积的最大值
*/
private:
int maxSize = 0,count = 0;
public:
void dfs(vector<vector<int>>& grid, int i, int j, int m, int n) {
if (i < 0 || i >= m || j < 0 || j >= n)return;
if (grid[i][j] == 0) return;
// 剩下就只有是1的情况
grid[i][j] = 0;
count++;
dfs(grid, i - 1, j, m, n);
dfs(grid, i + 1, j, m, n);
dfs(grid, i, j - 1, m, n);
dfs(grid, i, j + 1, m, n);
}
int maxAreaOfIsland(vector<vector<int>>& grid) {
int m = grid.size();
int n = grid[0].size();
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
// 遍历每一个位置,如果是陆地就开始DFS标记
if (grid[i][j] == 1) {
count = 0;
dfs(grid, i, j, m, n);
maxSize = max(maxSize, count);
}
}
}
return maxSize;
}
力扣-695-岛屿的最大面积
发布时间 2023-04-09 03:10:31作者: YaosGHC