优选算法系列(6. BFS 解决 FloodFill 算法)
FloodFill算法:
BFS 解决 FloodFill 算法:
图像渲染(medium)
题目链接:733. 图像渲染 - 力扣(LeetCode)
算法:
可以利⽤「深搜」或者「宽搜」,遍历到与该点相连的所有「像素相同的点」,然后将其修改成指定的像素即可。
岛屿数量(medium)
题目链接:200. 岛屿数量 - 力扣(LeetCode)
算法:
遍历整个矩阵,每次找到「⼀块陆地」的时候:
说明找到「⼀个岛屿」,记录到最终结果
ret
里面;
并且将这个陆地相连的所有陆地,也就是这块「岛屿」,全部「变成海洋」。这样的话,我们下次 遍历到这块岛屿的时候,它「已经是海洋」了,不会影响最终结果。
其中「变成海洋」的操作,可以利⽤「深搜」和「宽搜」解决,其实就是
733. 图像渲染
这道题~这样,当我们,遍历完全部的矩阵的时候, ret
存的就是最终结果。


岛屿的最大面积(medium)
题目链接:695. 岛屿的最大面积 - 力扣(LeetCode)
算法:
和上一题差不多,只不过这里每找到一块连着的土地就要加一块面积最后取最大的面积。
被围绕的区域(medium)
题目链接:130. 被围绕的区域 - 力扣(LeetCode)
算法:
正难则反。
可以先利用
bfs
将与边缘相连的
'0'
区域做上标记,然后重新遍历矩阵,将没有标记过的
'0' 修改成 'X' 即可。
迷宫中离入口最近的出口(medium)
题目链接:1926. 迷宫中离入口最近的出口 - 力扣(LeetCode)
算法:
利⽤层序遍历来解决迷宫问题,是最经典的做法。
我们可以从起点开始层序遍历,并且在遍历的过程中记录当前遍历的层数。这样就能在找到出口的时候,得到起点到出⼝的最短距离。