竟然直接用递归的深度优先遍历就是最优速度了…
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;
}
};