1. 解析
这道题和之前的Surrounded Regions 思路是一样的,比它稍微简单一些
class Solution {
public:
int numIslands(vector<vector<char>>& grid) {
int island = 0;
for (int row = 0; row < grid.size(); ++row)
for (int col = 0; col < grid[row].size(); ++col){
if (grid[row][col] == '1') {
DFS(grid, row, col);
island++;
}
}
return island;
}
void DFS(vector<vector<char>>& grid, int row, int col){
if (grid[row][col] == '1'){
grid[row][col] = '$';
if (row - 1 >= 0 && grid[row-1][col] == '1')
DFS(grid, row-1, col); //上
if (col + 1 < grid[row].size() && grid[row][col+1] == '1')
DFS(grid, row, col+1); //左
if (row + 1 < grid.size() && grid[row+1][col] == '1')
DFS(grid, row+1, col); //下
if (col - 1 >= 0 && grid[row][col-1] == '1')
DFS(grid, row, col-1); //右
}
}
};