美文网首页
岛屿数量

岛屿数量

作者: 7赢月 | 来源:发表于2020-04-20 15:35 被阅读0次

题目描述

https://leetcode-cn.com/problems/number-of-islands/

package main

// 深度优先遍历
func numIslands(grid [][]byte) int {
    if len(grid) == 0 || len(grid[0]) == 0 {
        return 0
    }
    var r int
    // 遍历每个点 只向下和向右遍历
    for i := 0; i < len(grid); i++ {
        for j := 0; j < len(grid[0]); j++ {
            // 改点是岛屿 并且曾经没去过
            if grid[i][j] != '1' {
                continue
            }
            DFS2(i, j, grid)
            r++
        }
    }
    return r
}

func DFS2(x int, y int, grid [][]byte) {
    // 边界条件
    if x < 0 || y < 0 || x >= len(grid) || y >= len(grid[0]) {
        return
    }
    if grid[x][y] == '0' {
        return
    }
    grid[x][y] = '2'
    //  只有满足两个条件才处理,减少重复递归
    if x+1 < len(grid) && grid[x+1][y] == '1' {
        DFS2(x+1, y, grid)
    }
    if x-1 >= 0 && grid[x-1][y] == '1' {
        DFS2(x-1, y, grid)
    }
    if y+1 < len(grid[0]) && grid[x][y+1] == '1' {
        DFS2(x, y+1, grid)
    }
    if y-1 >= 0 && grid[x][y-1] == '1' {
        DFS2(x, y-1, grid)
    }
}

思路

这道题使用了深度优先遍历,当然广度优先遍历也是可以的,最后看题解有并查集的算法,这个可以了解下。

相关文章

  • 岛屿数量

    给定一个由 '1'(陆地)和 '0'(水)组成的的二维网格,计算岛屿的数量。一个岛被水包围,并且它是通过水平方向或...

  • 岛屿数量

    题目描述:给你一个由 '1'(陆地)和 '0'(水)组成的的二维网格,请你计算网格中岛屿的数量。岛屿总是被水包围,...

  • 岛屿数量

    题目来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/numb...

  • 岛屿数量

    来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/number...

  • 岛屿数量

    题目描述 https://leetcode-cn.com/problems/number-of-islands/ ...

  • 岛屿数量

    题目 给定一个由 '1'(陆地)和 '0'(水)组成的的二维网格,计算岛屿的数量。一个岛被水包围,并且它是通过水平...

  • 岛屿数量

    题目: 题目的理解: 1相邻的是一个岛屿,遍历数组,当碰到1则记录一个岛屿A,然后将1相连的1都设置为2,说明已经...

  • leecode岛屿数量

    题目描述可用解法DFS 深度优先遍历BFS 广度优先遍历算法思路:下列代码用BFS,循环遍历输入的二维列表如果遇到...

  • LeetCode:岛屿数量

    200. 岛屿数量 给定一个由 '1'(陆地)和 '0'(水)组成的的二维网格,计算岛屿的数量。一个岛被水包围,并...

  • Leetcode 岛屿数量

    题目描述 leecode第200题:岛屿数量[https://leetcode-cn.com/problems/n...

网友评论

      本文标题:岛屿数量

      本文链接:https://www.haomeiwen.com/subject/jfsdihtx.html