463.岛屿的周长
题目描述
示例
深度优先搜索(DFS)
类似先序遍历,是搜索算法的一种,它沿着树的深度遍历树的节点,尽可能深的搜索树的分支。当节点v的所有边都已被探寻过,搜索将回溯到发现节点v的那条边的起始节点。这一过程一直进行到已发现从源节点可达的所有节点为止。如果还存在未被发现的节点,则选择其中一个作为源节点并重复以上过程,整个进程反复进行直到所有节点都被访问为止。DFS属于盲目搜索。
思路和算法
思路:岛屿的周长就是岛屿方格与非岛屿方格相邻的边的数量。
采用深度优先搜索算法遍历,每当在DFS遍历中,从一个岛屿方格走向一个非岛屿方格,就将周长加1。同时,为了保证方格不进行重复遍历,将遍历过的方格中的值改变为2。有个问题,我一开始卡在这里,发现解决起来很麻烦,这个问题就是先判断方格的位置。看了题解,我才发现了另一种思路“先污染后治理”,即先做递归调用,再在每个DFS函数的开头判断坐标是否合法,不合法的直接返回。同样的,我们还需要判断该方格是否有岛屿(值是否为1),否则也需要返回。