欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

leetcode 200. 岛屿数量

程序员文章站 2024-03-18 09:07:46
...

leetcode 200. 岛屿数量

其实很简单,用dfs很快解出

class Solution {
public:
    int ans;
    void dfs(vector<vector<char>>& grid,vector<vector<int>>& visit,int i,int j,int n,int m){
        if(i<0||i>=n||j<0||j>=m||grid[i][j]=='0') return;
        grid[i][j]='0';
        dfs(grid,visit,i+1,j,n,m);
        dfs(grid,visit,i-1,j,n,m);
        dfs(grid,visit,i,j-1,n,m);
        dfs(grid,visit,i,j+1,n,m);
    }
    int numIslands(vector<vector<char>>& grid) {
        if(!grid.size()) return ans;
        int n=grid.size(),m=grid[0].size();
        if(!n||!m) return ans;
        vector<vector<int>> visit(n+1,vector<int>(m+1,0));
        for(int i=0;i<n;i++)
            for(int j=0;j<m;j++)
                if(!visit[i][j]&&grid[i][j]=='1'){
                    visit[i][j]==1;
                    ++ans;
                    dfs(grid,visit,i,j,n,m);}
        return ans;
    }
};

结果:

leetcode 200. 岛屿数量