Task:
思路:
1.首先判断给定的二维数组是不是空的;
2.对二维数组遍历一下,对每个元素进行判断,
a)如果这个值等于1, 那么就把计数器+1, 并且对该元素四周进行深度搜索,
3.返回
代码:
class Solution {
public:
int numIslands(vector<vector<char>>& grid) {
if(grid.empty()) return 0; //测试用例中是否有空测试样例
int count = 0;
for(int i=0; i < grid.size(); i++){
for(int j=0; j < grid[0].size(); j++){
if(grid[i][j] == '1'){
count++;
dfs(grid, i, j);
}
}
}
return count;
}
void dfs(vector<vector<char>> &grid, int i, int j){
if(i >= grid.size() || i < 0 || j>= grid[0].size() || grid[i][j] != '1')
return;
grid[i][j] = '0';
dfs(grid, i+1, j);
dfs(grid, i, j+1);
dfs(grid, i-1, j);
dfs(grid, i, j-1);
}
};