代码随想录图论part03
第十一章:图论part03
- 孤岛的总面积 (深搜)
代码随想录
孤岛问题:先处理边缘岛在处理孤岛
- 沉没孤岛 (广搜)
代码随想录
- 水流问题
代码随想录
目的:找水源
思路;逆向思考,找两个边界的公共源头,从第一边界出发找到所有源头,再从第二边界出发找到所有源头,重叠处即为目标
main:
深搜:
广搜:
104.建造最大岛屿
代码随想录
思路:首先找到目前最大面积的岛屿,然后遍历岛屿周边的海洋,然后找到以某一片海洋为中心的岛屿面积的最大值
第一步:
用一个map存岛屿及岛屿面积
计算岛屿面积并给他们编号
深搜(计算面积并标记):
整体代码:
第二步:
1.遍历岛屿周边海洋,岛屿已经有编号,获得周围连接岛屿总面积,根据编号查表
2.需要一个哈希来记录添加的新陆地周边(上右下左)已经计算过的岛屿编号,防止重复计算(例如,新陆地的左边和下边是同一片岛屿,这时候就得跳过左边),每次遇到新陆地就要清空该表,动态变化
整体代码:
总结:
- 前三道题都是逆向思考,从外向内
- 建造最大岛屿:第一步已经把整张图划分为几个区域,第二步就是整合区域然后找最大区域,每一步都有标记的过程,注意处理条件