题目描述
思路分析
Flood-Fill算法
实际上就是DFS/BFS搜连通块。
代码实现
class Solution {
public:
vector<vector<char>> grid;
int n,m;
int dx[4]={0,1,0,-1};
int dy[4]={-1,0,1,0};
void dfs(int x,int y){
grid[x][y]='0';
for(int i=0;i<4;i++){
int nx=x+dx[i],ny=y+dy[i];
if(nx>=0&&nx<n&&ny>=0&&ny<m&&grid[nx][ny]=='1') dfs(nx,ny);
}
}
int numIslands(vector<vector<char>>& _grid) {
grid=_grid;
n=grid.size(),m=grid[0].size();
int res=0;
for(int i=0;i<grid.size();i++)
for(int j=0;j<grid[0].size();j++){
if(grid[i][j]=='1') dfs(i,j),res++;
}
return res;
}
};