题解 | 岛屿数量
岛屿数量
https://www.nowcoder.com/practice/0c9664d1554e466aa107d899418e814e
package main /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * 判断岛屿数量 * @param grid char字符型二维数组 * @return int整型 */ func solve(grid [][]byte) int { row := len(grid) col := len(grid[0]) visited := make([][]bool, row) for i:=0;i<row;i++{ visited[i]=make([]bool,col) } res := 0 //广度优先遍历 for i := 0; i < row; i++ { for j := 0; j < col; j++ { if grid[i][j] == '1' && visited[i][j] == false { //递归将附近的岛屿全部标记为true mark(grid, visited, i, j) //发现新大陆 res++ } } } return res } func mark(grid [][]byte, visited [][]bool, i, j int) { visited[i][j] = true //将四周的岛屿都标记为true if i +1<len(grid) && grid[i+1][j] == '1' && visited[i+1][j] == false { mark(grid, visited, i+1, j) } if i > 0 && grid[i-1][j] == '1' && visited[i-1][j] == false { mark(grid, visited, i-1, j) } if j +1< len(grid[0]) && grid[i][j+1] == '1' && visited[i][j+1] == false { mark(grid, visited, i, j+1) } if j != 0 && grid[i][j-1] == '1' && visited[i][j-1] == false { mark(grid, visited, i, j-1) } }