代码随想录冲冲冲 Day50 图论Part2

99. 岛屿数量

首先是int dir[4][2] = {0,1,1,0,-1,0,0,-1};这样的定义方式

Dfs方法:

在dfs的过程中,返回条件是当前这个点已经被访问过或者这个点代表海洋

其次在任何一个点进入dfs后,先标记为访问过

接下来对于上下左右的位置进行推进

在进行dfs时 会在下一层判断是否访问或为海洋

整个这个dfs在做的事情就是 当发现一个陆地后 寻找所有连续的陆地

在main主函数中 每一个二层forloop满足条件 代表发现了新的陆地

Bfs方法:

整体思路是一样的

但是bfs时使用queue的 首先先把第一个点放入其中 每一次放入后都标记为已访问

之后每次读取que中的front对于这个front进行进行推进

各个方位只要满足条件就会放入queue中同时要标记为已访问

100. 岛屿的最大面积

Dfs方法:

整体思路跟上面的一样 区别是要记录陆地面积 那么每一次if中都要初始化count

用这个count来记录当前这个新陆地的面积,在每一次dfs后跟新result。由于是满足

陆地等条件时才会进入dfs所以每次进入count++

Bfs方法:

整体也是一样的,由于bfs中其实不存在回溯 所以在第一个点加入是就要count++

之后每次满足条件放入que中,count++ 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值