题目大意
给你一个由 ‘1’(陆地)和 ‘0’(水)组成的的二维网格,请你计算网格中岛屿的数量。
岛屿总是被水包围,并且每座岛屿只能由水平方向或竖直方向上相邻的陆地连接形成。
此外,你可以假设该网格的四条边均被水包围。
示例 1:
输入:
11110
11010
11000
00000
输出: 1
示例 2:
输入:
11000
11000
00100
00011
输出: 3
解释: 每座岛屿只能由水平和/或竖直方向上相邻的陆地连接而成。
解题思路
遍历整个二维网络,如果当前位置是’1’(陆地),则记录岛屿数量+1, 然后递归地找与当前位置相连的陆地,将其变为’0’(所有相连的陆地算一个岛屿,因此不改变的话会产生重复计数。改成其他字符更好,结束后再进行一次遍历,可以把’1’变回来)
class Solution {
public:
int numIslands(vector<vector<