leetcode - 200. Number of Islands

竟然直接用递归的深度优先遍历就是最优速度了…
在这里插入图片描述

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

猜你喜欢

转载自blog.csdn.net/weixin_41938758/article/details/88966892