class Solution {
public:
void DFS(int r,int c,vector<vector<char>>&grid,int n,int m,vector<vector<int>>&visited,int color){
int rn[]={0,0,1,-1};
int cn[]={-1,1,0,0};
visited[r][c]=color;
for(int i=0;i<4;i++){
int rnxt=r+rn[i];
int cnxt=c+cn[i];
if(rnxt>=0&&rnxt<n&&cnxt>=0&&cnxt<m)if(!visited[rnxt][cnxt]&&grid[rnxt][cnxt]=='1')DFS(rnxt,cnxt,grid,n,m,visited,color);
//if(cnxt>=0&&cnxt<m)if(!visited[rnxt][cnxt])DFS(rnxt,cnxt,grid,n,m,visited);
}
}
int numIslands(vector<vector<char>>& grid) {
int n=grid.size();
int m=grid[0].size();
vector<vector<int>>visited(n,vector<int>(m,0));
int color=1;
for(int i=0;i<n;i++){
for(int j=0;j<grid[i].size();j++){
if(!visited[i][j]&&grid[i][j]=='1'){
DFS(i,j,grid,n,m,visited,color);
color++;
}
}
}
return color-1;
}
};
No comments:
Post a Comment