200_岛屿数量
给你一个由 ‘1’(陆地)和 ‘0’(水)组成的的二维网格,请你计算网格中岛屿的数量。 岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。 此外,你可以假设该网格的四条边均被水包围。 示例 1: 输入:grid = [ ["1","1","1","1","0"], ["1","1","0","1","0"], ["1","1","0","0","0"], ["0","0","0","0","0"] ] 输出:1 示例 2: 输入:grid = [ ["1","1","0","0","0"], ["1","1","0","0","0"], ["0","0","1","0","0"], ["0","0","0","1","1"] ] 输出:3 提示: m == grid.length n == grid[i].length 1 <= m, n <= 300 grid[i][j] 的值为 '0' 或 '1' func numIslands(grid [][]byte) int { } func numIslands(grid [][]byte) int { ans := 0 var dfs func(row, col int) dfs = func(i, j int) { // 深度优先 尽可能往里面走 grid[i][j] = '0' // 判断四周的 // 上 if i > 0 && grid[i-1][j] == '1' { dfs(i-1, j) } // 左 if j > 0 && grid[i][j-1] == '1' { dfs(i, j-1) } // 右 if i < len(grid)-1 && grid[i+1][j] == '1' { dfs(i+1, j) } // 下 if j < len(grid[i])-1 && grid[i][j+1] == '1' { dfs(i, j+1) } } for i := 0; i < len(grid); i++ { for j := 0; j < len(grid[i]); j++ { if grid[i][j] == '1' { ans++ dfs(i, j) } } } return ans }