计算岛屿数量
题解思路
本题是一个典型的 连通区域个数 计算问题,可以用 深度优先搜索(DFS) 或 广度优先搜索(BFS) 解决。
方法1:深度优先搜索(DFS)
- 遍历整个网格,遇到 '1'(陆地) 时,进行 深度优先搜索,将与之相连的所有陆地标记为 '0'(水),防止重复计算。
- 递归搜索当前陆地的 上下左右 四个方向,直到整个岛屿被标记完毕。
- 继续遍历,统计岛屿数量。
Leetcode 51.岛屿数量-原题链接
题目内容
给你一个由 '1 '(陆地)和 '0'(水)组成的的二维网格,请你计算网格中岛屿的数量。
岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。
此外,你可以假设该网格的四条边均被水包围
输入描述
- 第一行两个整数n,m,表示网格大小为n×m
- 接下来有n行,每行m列,表示网格。
输出描述
一个整数,表示网格中岛屿的数量
样例1
输入
4 5
11110
11010
11000
00000
输出
1
样例2
输入
4 5
11000
11000
00100
00011
输出
3
提示
- m==grid.length
- n==grid[i].length
- 1<=m,n<=300
- grid[i][j]的值为 '0' 或 '1'