当前位置:   article > 正文

算法题解:岛屿的数量(JAVA代码)_岛屿数量java

岛屿数量java

算法题解:岛屿的数量(JAVA代码)

给定一个二维数组,数组元素由0和1组成。0代表水,1代表陆地。陆地可以形成岛。

如果上下左右,包括对角线方向如有相邻的陆地(1)则可以形成岛。如下图所示。

编写一个算法,求岛的数量。

例如:规定一个二维数组:

  1. {1, 1, 0, 0, 0},
  2. {0, 1, 0, 0, 1},
  3. {1, 0, 0, 1, 1},
  4. {0, 0, 0, 0, 0},
  5. {1, 0, 1, 0, 1}

根据这个二维数组,岛的划分如下图所示,可以划分为5个岛屿。


算法分析

注意:这个问题需要检索8个方向。

与之前不同的是,之前陆地(1)的相邻不包含对角线的4个方向,只能水平方向或者垂直方向。

这是标准问题的一个变化:“计算无向图中连接组件的数量”。最常见的算法设计思想是采用DFS算法,给出一个解。

其实,也可以使用不相交集数据结构来解决这个问题。其思想是将所有“1”的单元格都视为单个集。遍历矩阵并对所有相邻的1个顶点进行并集。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/476047
推荐阅读
相关标签
  

闽ICP备14008679号