题目描述
解题思路
题中的矩阵横纵方向代表的不是岛,而是坐标,所以和LeetCode:Friend Circles 查并集那道题里的矩阵有点区别(当然两道题都是可以查并集,DFS,BFS解决的)
dfs的一个思路是:找到一个为‘1’的点,然后找到周围为’1‘的点,dfs可以把这个点所在的“岛”都找到,岛++,并将岛上的所有‘1’都换成‘0’,遍历矩阵去找下一个岛
代码
class Solution {
public:
void dfs(int i,int j,int m,int n,vector<vector<char> >& grid){
if(i<0||i>m-1||j<0||j>n-1||grid[i][j]!='1')
return;
else
grid[i][j] = '0';
dfs(i+1,j,m,n,grid);
dfs(i-1,j,m,n,grid);
dfs(i,j-1,m,n,grid);
dfs(i,j+1,m,n,grid);
}
int numIslands(vector<vector<char>>& grid) {
int count=0;
if(grid.size()==0){
return 0;
}else{
int m = grid.size();
int n = grid[0].size();
for(int i=0;i<m;i++){
for(int j=0;j<n;j++){
if(grid[i][j]=='1'){
dfs(i,j,m,n,grid);
count++;
}
}
}
}
return count;
}
};