思路
根据图论基础中提到的概念,我们知道本题本质上就是给定一个2D网格图,求连通分量的个数。
而本题的边未显式定义,它是说:任意两个格子如果相邻且点值都是1,则存在一条边,样例3如下所示👇

本题思路相对简单:遍历每一个点值为1的,且未被访问过的格子,以这个点为起点进行BFS,探索它所在的连通分量并统计个数。动画如下所示👇
给你一个由字符 ′1′ 和 ′0′ 组成的二维网格 grid。
其中,′1′ 表示陆地,′0′ 表示水域。
请计算网格中岛屿的数量。
岛屿总是被水包围,并且每座岛屿只能由水平方向或竖直方向上相邻的陆地连接形成。
此外,可以假设该网格的四条边均被水包围。
第一行输入两个整数 m 和 n,分别表示网格 grid 的行数和列数。
接下来输入 m 行,每行包含 n 个字符,每个字符为 0 或 1,表示网格中的水域或陆地。
输出一个整数,表示网格中岛屿的数量。
4 5
11110
11010
11000
00000
1
4 5
11000
11000
00100
00011
3
m==grid.length
n==grid[i].length
1<=m,n<=300
grid[i][j] 的值为 ′0′ 或 ′1′