这道题目需要根据给出的二维数组,求出所有由岛屿组成的区域的数量。
相邻的两个岛屿属于同一片区域。这道题目看似是求最小值,实际上仍然是当遍历到某一个岛屿时,求出包含它的最大区域,使得区域内全是相连的岛屿。
因此,可以使用广度优先搜索方法求解。当遍历到某一个点时,如果这个点是陆地,那么就使用定义好的dfs函数,求出包含这个点的最大区域(dfs:当到达某一个点时,首先判断是否为陆地,如果是,则沿着固定方向,例如上下左右观察相邻的是否为陆地,当某个方向为陆地,到达这个新陆地,继续环顾,以此类推。当四周全是水,退出当前递归并返回上一级,继续执行上一级的函数,以此类推)。然后结果加1,继续寻找下一个值为1的点,也就是下一个区域。需要注意的是,当已经求出一个区域并在结果中记录后,为了防止后面的遍历不再重复计算这个区域,需要对这个区域中所有点进行标记。
(力扣)200、岛屿数量
最新推荐文章于 2024-06-20 14:55:48 发布