LeetCode 200 岛屿数量

  • 分析
    DFS,思路比较简单。
  • 代码
class Solution {
    
    
public:
    void gai(vector<vector<char>>& grid, int n, int m){
    
    
        int size = grid.size();
        if(size == 0)return;
        int M = grid[0].size();

        if(grid[n][m]=='0') return;
        
        grid[n][m] ='0';

        if(m + 1 < M && grid[n][m+1]=='1')gai(grid,n, m+1);       
        if(m - 1 >=0 && grid[n][m-1]=='1')gai(grid,n, m-1); 
        if(n+1 < size && grid[n +1][m]=='1')gai(grid,n+1, m);
        if(n-1 >=0 && grid[n -1][m]=='1')gai(grid,n-1, m);
    }

    int numIslands(vector<vector<char>>& grid) {
    
    
        int ans = 0;
        int n = grid.size();
        if(n == 0) return 0;

        int m = grid[0].size();

        for(int i = 0; i < n;i++){
    
    
            for(int j = 0; j < m;j++){
    
    
                if(grid[i][j]=='1'){
    
    
                    gai(grid,i,j);
                    ans++;
                }
            }
        }
        return ans;
    }
};

猜你喜欢

转载自blog.csdn.net/xiaoan08133192/article/details/119935519