dfs重拳出击
java:
class Solution {
public int numIslands(char[][] grid) {
int ans = 0;
if(grid == null && grid.length == 0){
return 0;
}
int r = grid.length;
int c = grid[0].length;
for(int i = 0; i < r; i++){
for(int j = 0; j < c; j++){
if(grid[i][j] == '1'){
dfs(grid, i , j);
ans++;
}
}
}
return ans;
}
private void dfs(char[][] grid, int i, int j){
if(i < 0 || j < 0 || i >= grid.length || j >= grid[0].length || grid[i][j] == '0'){
return;
}
grid[i][j] = '0';
dfs(grid, i + 1, j);
dfs(grid, i - 1, j);
dfs(grid, i, j + 1);
dfs(grid, i, j - 1);
}
}
python3:
class Solution:
def numIslands(self, grid: List[List[str]]) -> int:
def dfs(grid, i, j):
if not 0 <= i < len(grid) or not 0 <= j < len(grid[0]) or grid[i][j] == '0': return
grid[i][j] = '0'
dfs(grid, i + 1, j)
dfs(grid, i - 1, j)
dfs(grid, i, j + 1)
dfs(grid, i, j - 1)
ans = 0
if grid is None and len(grid) == 0:
return 0
for i in range(len(grid)):
for j in range(len(grid[0])):
if grid[i][j] == '1':
dfs(grid, i , j)
ans += 1
return ans



