(力扣)200、岛屿数量

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值