leetcode:1254. 统计封闭岛屿的数目

链接:https://leetcode-cn.com/problems/number-of-closed-islands/
只有在边界的岛屿才不是封闭的,用深度优先搜索解题,其中一个参数标识是否为封闭的岛屿,只有到达边界时才更新。
C++代码:

class Solution {
public:
    int closedIsland(vector<vector<int>>& grid) {
        int res = 0;
        for(int i = 0;i<grid.size();i++)
            for(int j = 0;j<grid[0].size();j++)
            {
                if(grid[i][j]==0)
                {
                    int val = 1;
                    dfs(grid,i,j,val);
                    res+=val;
                }
            }
        return res;
    }   
    void dfs(vector<vector<int>>& grid, int i,int j,int &val)
    {
        if(i<0||i==grid.size()||j<0||j==grid[0].size())
        {
            val=0;
            return;
        }
        if(grid[i][j]==1)
            return;
        grid[i][j] = 1;
        dfs(grid, i+1,j,val);
        dfs(grid,i-1,j,val);
        dfs(grid,i,j+1,val);
        dfs(grid,i,j-1,val);
    }
    

};

你可能感兴趣的:(leetcode,dfs,leetcode,算法)