引用:代码随想录(http://www.programmercarl.com)
101. 孤岛的总面积
思路:dfs或者bfs遍历。因为孤岛不能接触边缘,所以从边上开始找结点开始遍历,使用沉岛思想。遍历一遍全表的时候,统计岛的数量。
102. 沉没孤岛
思路:dfs或者bfs遍历。从边上找节点开始遍历,遍历到的点不沉,标记为2。然后遍历一遍全表的时候沉岛。最后遍历一遍表把标为2的节点置为1。
103. 水流问题
普通思路:遍历每个点,然后看这个点能不能同时到达第一组边界和第二组边界。
优化思路:反过来想,从第一组边界上的节点逆流而上,将遍历过的节点都标记上。从第二组边界的边上节点逆流而上,将遍历过的节点也标记上。然后两方都标记过的节点就是既可以流太平洋也可以流大西洋的节点。
104. 建造最大岛屿
优化思路:第一次遍历地图,得出各个岛屿的面积,并做编号记录。可以使用map记录,key为岛屿编号,value为岛屿面积。第二次遍历地图,遍历0的方格(因为要将0变成1),并统计该1(由0变成的1)周边岛屿面积,将其相邻面积相加在一起,遍历所有0之后,就可以得出选一个0变成1 之后的最大面积。