leetcode 200 岛屿数量

题目

给你一个由 ‘1’(陆地)和 ‘0’(水)组成的的二维网格,请你计算网格中岛屿的数量。

岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。

此外,你可以假设该网格的四条边均被水包围。

示例

输入:grid = [
[“1”,“1”,“0”,“0”,“0”],
[“1”,“1”,“0”,“0”,“0”],
[“0”,“0”,“1”,“0”,“0”],
[“0”,“0”,“0”,“1”,“1”]
]
输出:3

解析

这道题要使用dfs法来进行遍历,在矩阵遍历的过程中,遇到为1的节点,则从该位置开始进行dfs,直到遇到边界;同时在dfs的过程中,需要将遍历到的1置为0,防止下一次又遍历到。

func numIslands(grid [][]byte) int {
	var dfs func(grid [][]byte, i, j int)
	dfs = func(grid [][]byte, i, j int) {
		// dfs终止条件
		if i < 0 || j < 0 || i >= len(grid) || j >= len(grid[0]) || grid[i][j] == '0' {
			return
		}
		grid[i][j] = '0'
		dfs(grid, i+1, j)
		dfs(grid, i-1, j)
		dfs(grid, i, j+1)
		dfs(grid, i, j-1)
	}
	count := 0
	for i := 0; i < len(grid); i++ {
		for j := 0; j < len(grid[0]); j++ {
			if grid[i][j] == '1' {
				dfs(grid, i, j)
				count++
			}
		}
	}
	return count
}

相关推荐

  1. leetcode 200 岛屿数量

    2024-06-16 00:18:01       5 阅读
  2. 【图论】Leetcode 200. 岛屿数量【中等】

    2024-06-16 00:18:01       22 阅读
  3. leetcode-200-岛屿问题

    2024-06-16 00:18:01       40 阅读
  4. 200. 岛屿数量

    2024-06-16 00:18:01       32 阅读
  5. 200. 岛屿数量

    2024-06-16 00:18:01       6 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-06-16 00:18:01       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-16 00:18:01       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-16 00:18:01       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-16 00:18:01       18 阅读

热门阅读

  1. C语言----深入理解指针(5)

    2024-06-16 00:18:01       7 阅读
  2. Linux之tar打包解包命令

    2024-06-16 00:18:01       3 阅读
  3. Linux 常用命令 - cd 【切换目录】

    2024-06-16 00:18:01       7 阅读
  4. Golang:依赖注入与wire

    2024-06-16 00:18:01       6 阅读
  5. Vue 3 组合式编程:革新前端开发的新时代

    2024-06-16 00:18:01       6 阅读