200. 岛屿数量
DFS:
class Solution { public int numIslands(char[][] grid) { int ans = 0; for(int i = 0;i<grid.length;i++){ for(int j = 0;j<grid[0].length;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 || i>=grid.length || j<0 || j>=grid[0].length || grid[i][j]!='1'){ return; } //标记为已选过 grid[i][j] = '2'; //递归 dfs(grid,i+1,j); dfs(grid,i-1,j); dfs(grid,i,j+1); dfs(grid,i,j-1); } }时间复杂度:O(mn) 其中 m 和 n 分别是 grid 的行数和列数
空间复杂度:O(mn)