leetcode695. 岛屿的最大面积
挺简单的
class Solution {
public:
// 深度优先搜索(DFS)函数,用于计算当前岛屿的面积
// 参数: grid - 二维网格地图, i - 当前行索引, j - 当前列索引
// 返回值: 当前岛屿的面积
int dfs(vector<vector<int>>& grid,int i,int j){
// 边界检查:如果超出网格范围,返回0
if(i == -1 || i == grid.size() || j == -1 || j == grid[0].size()) return 0;
// 如果当前单元格不是陆地(1),即可能是水(0)或已访问过的陆地(2),返回0
if(grid[i][j] == 0 || grid[i][j] == 2) return 0;
// 将当前陆地标记为已访问(2)
grid[i][j] = 2;
// 返回当前单元格(面积1)加上四个方向相邻单元格的面积
return 1 + dfs(grid,i-1,j) // 上
+ dfs(grid,i+1,j) // 下
+ dfs(grid,i,j-1) // 左
+ dfs(grid,i,j+1); // 右
}
// 主函数,计算网格中最大岛屿面积
// 参数: grid - 二维网格地图
// 返回值: 最大岛屿面积
int maxAreaOfIsland(vector<vector<int>>& grid) {
int res = 0; // 存储最大面积结果
// 遍历整个网格
for(int i = 0;i < grid.size();++i){
for(int j = 0;j < grid[0].size();++j){
// 当发现未访问的陆地(1)时,进行DFS计算面积
if(grid[i][j] == 1)
res = max(res,dfs(grid,i,j)); // 更新最大面积
}
}
return res; // 返回最终结果
}
};