并查集练习 — 扩展问题(二)

根据并查集练习 —岛屿数量的问题再次扩展:
原题是给定一个二维数组matrix(char[][]),里面的值不是1就是0,上、下、左、右相邻的1认为是一片岛。返回matrix中岛的数量。
扩展为:如果是中国的地图,1表示沙砾,0表示水。这种情况下,matrix数组会非常非常大,怎么采用分治的思想来求土地(岛屿)的数量。

总的来说是进行拆分,分别求出每一块的土地数量后,再次进行合并。比如说:二维数组如图所示
在这里插入图片描述
它是一个岛,但是太大了,如何进行拆分以及整合。
在这里插入图片描述
可以在中间任意位置进行切割,此时左右两边互相不知道信息,分别拆分,左侧可拆分出来A,B两个岛屿,右侧可拆分出来C,D,E三个岛屿,拆分的同时收集边界信息,看那些岛屿(根据图中颜色划分)属于哪个边界。A,B,C,D,E共5个样本而后根据边界找parent。如果不相等,边界union。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值