uacs2024

导航

leetcode695. 岛屿的最大面积

695. 岛屿的最大面积

挺简单的

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;  // 返回最终结果
    }
};

 

posted on 2025-03-26 21:36  ᶜʸᵃⁿ  阅读(13)  评论(0)    收藏  举报