题解 | #岛屿数量#

岛屿数量

http://www.nowcoder.com/practice/0c9664d1554e466aa107d899418e814e


/**
 * 判断岛屿数量
 * @param grid char字符型二维数组 
 * @return int整型
*/
//Floorfill算法,用BFS去淹掉陆地,这样就可以避免额外的visited数组
//可以不走回头路
func solve( grid [][]byte ) int {
    m := len(grid)
    n := len(grid[0])
    res := 0
    for i := 0; i < m; i++ {
        for j := 0; j < n; j++ {
            if grid[i][j] == '1' {
                res++
                dfs(grid, i, j)
            }
        }
    }
    return res
}

func dfs(grid [][]byte, i, j int) {
    m := len(grid)
    n := len(grid[0])
    //处理超出边界的情况
    if i < 0 || j < 0 || j >= n || i >= m {
        return 
    }
    if grid[i][j] == '0' {
        return
    }
    //如果是陆地,就把它淹掉
    grid[i][j] = '0'
    //上下左右4个方向
    dfs(grid, i-1, j)
    dfs(grid, i+1, j)
    dfs(grid, i, j-1)
    dfs(grid, i, j+1)
}
全部评论

相关推荐

11-21 14:37
江苏大学 Java
点赞 评论 收藏
分享
渴望wlb的牛油果很...:直说卡第一学历不就行了 非得拐弯抹角
点赞 评论 收藏
分享
10-31 13:04
南华大学 Java
嵌入式的小白:很多面试,面试前不会去打扰cto的,但一般cto不会在这些小事上刷人,只能说这个cto比较操心,啥重要不重要,紧急不紧急的,估计都会过问,平淡看待吧
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务