LeetCode:1254. 统计封闭岛屿的数目

岛屿类型的题目是练习DFS和BFS的常见题目,前面我有写过统计岛屿数量的题解,用dfs和bfs都写了一下 LeetCode:200.岛屿数量,今天再来分享一个求岛屿数量的进阶题目,lk1254

这道题跟上一道唯一的区别就是求封闭,怎么个封闭法,就是把靠边的那些土地全部都当做海水来计算,(只计算内陆岛屿)

看个图就知道了,这道题0代表土地,1代表海水

LeetCode:1254. 统计封闭岛屿的数目_第1张图片

 这个图的封闭岛屿只有最终间的那一块,周边那些0因为都是再边界上,因此不算是土地

那么其实思路就很简单了,那么如何判断「封闭岛屿」呢?其实很简单,把上一题中那些靠边的岛屿排除掉,剩下的不就是「封闭岛屿」了吗

因此用DFS就能写下如下的代码:

class Solution {
public:
 void DFS(vector>& grid,int i,int j )
    {
        if(i>=grid.size()||j>=grid[0].size()||i<0||j<0)
        {
            return ;
        }

        if(grid[i][j]==1)return ;//已经是海水了
     
        grid[i][j]=1;
        DFS(grid,i-1,j);
        DFS(grid,i+1,j);
        DFS(grid,i,j-1);
        DFS(grid,i,j+1);

    }
    int closedIsland(vector>& grid) {
        int m=grid.size();
        int n=grid[0].size();
        for(int j=0;j

整体都是DFS的模板,跟上一个题比较就是多了去掉边缘的几行代码。。今日分享就到这

你可能感兴趣的:(大臣的刷题日志,leetcode,算法,深度优先)