关于go:Leetcode专题200岛屿数量

40次阅读

共计 552 个字符,预计需要花费 2 分钟才能阅读完成。

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 就间接退出。

正文完
 0