classSolution:defnumIslands(self, grid: List[List[str]])->int:
res =0
m, n =len(grid),len(grid[0])
visited =[[0]* n for _ inrange(m)]for i inrange(m):for j inrange(n):if grid[i][j]=='1'and visited[i][j]==0:
self.travel(i, j, grid, visited, m, n)
res +=1return res
deftravel(self, i, j, grid, visited, m, n):if(i <0or i >= m or j <0or j >= n
or grid[i][j]=='0'or visited[i][j]==1):return
visited[i][j]=1
self.travel(i-1, j, grid, visited, m, n)
self.travel(i+1, j, grid, visited, m, n)
self.travel(i, j-1, grid, visited, m, n)
self.travel(i, j+1, grid, visited, m, n)
Java
法1:岛屿数量
classSolution{publicintnumIslands(char[][] grid){int m = grid.length, n = grid[0].length;int[][] used =newint[m][n];int res =0;for(int i =0; i < m;++i){for(int j =0; j < n;++j){if(grid[i][j]=='0'|| used[i][j]==1){continue;}++res;dfs(i, j, grid, used, m, n);}}return res;}publicvoiddfs(int i,int j,char[][] grid,int[][] used,int m,int n){if(i <0|| i >= m
|| j <0|| j >= n
|| grid[i][j]=='0'|| used[i][j]==1){return;}
used[i][j]=1;dfs(i -1, j, grid, used, m, n);dfs(i +1, j, grid, used, m, n);dfs(i, j -1, grid, used, m, n);dfs(i, j +1, grid, used, m, n);}}