200. Number of Islands
problem description
Input:
11110
11010
11000
00000
Output: 1Input:
11000
11000
00100
00011
Output: 3algorithm thought
code
algorithm analysis
Last updated
Input:
11110
11010
11000
00000
Output: 1Input:
11000
11000
00100
00011
Output: 3Last updated
class Solution {
public:
int numIslands(vector<vector<char>>& grid) {
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(grid,i,j);
res++;
}
}
}
return res;
}
void DFS(vector<vector<char>> &grid, int x, int y)
{
grid[x][y] = '0';
if(x > 0 && grid[x - 1][y] == '1')
DFS(grid, x - 1, y);
if(x < grid.size() - 1 && grid[x + 1][y] == '1')
DFS(grid, x + 1, y);
if(y > 0 && grid[x][y - 1] == '1')
DFS(grid, x, y - 1);
if(y < grid[0].size() - 1 && grid[x][y + 1] == '1')
DFS(grid, x, y + 1);
}
};