leetcode链接:
https://leetcode.cn/problems/number-of-islands/solutions/4187...
解题思路:
func numIslands(grid [][]byte) int { result := 0 for i := 0; i < len(grid); i++ { for j := 0; j < len(grid[i]); j++ { if grid[i][j] == '1' { //遍历岛屿数量 BFS(grid, i, j) result ++ } } } return result}var fx = [4]int{1, 0, -1, 0} //x轴var fy = [4]int{0, -1, 0, 1} //y轴func BFS(grid [][]byte, x int, y int){ if x < 0 || x >= len(grid) || y < 0 || y >= len(grid[0]) || grid[x][y] == '0'{ //递归退出临界条件 return } grid[x][y] = '0' //将传入的岛屿转化成为水域 for i := 0; i < 4; i++ { //通过坐标轴遍历一个点的四个方向 BFS(grid,x + fx[i], y + fy[i]) }}//建设xy坐标轴的形式遍历一个点的四个方向,并将遇到的岛屿转化成水域。递归退出的临界条件是遇到边界就退出,或者传入岛屿皆为0就间接退出。