岛屿的个数
给定一个由 ‘1’(陆地)和 ‘0’(水)组成的的二维网格,计算岛屿的数量。一个岛被水包围,并且它是通过水平方向或垂直方向上相邻的陆地连接而成的。你可以假设网格的四个边均被水包围。
示例 1:
输入:
11110
11010
11000
00000
输出: 1
示例 2:
输入:
11000
11000
00100
00011
输出: 3
分析
这道题实质就是找有多少不相连的1字块,与其说是回溯,倒更像是深搜DFS,起始本质也差不多。每次遇到1则向一个方向扩散,直到遇到0时,回溯到上一个1处,再向另外一个方向扩散。不撞南墙不回头,撞到南墙回头之后,接着撞北墙,西墙,东墙。。思路差不多就是这样。
不过需要注意的是,我们扩散时,可以直接将1置0,这样深搜时不会使外层矩阵遍历重复计数
代码
class Solution {
//遍历数组,遇到1,则将其周围所有1都置0,循环操作
public int numIslands(c