首页 > 其他分享 >1254. 统计封闭岛屿的数目

1254. 统计封闭岛屿的数目

时间:2023-06-09 09:25:13浏览次数:38  
标签:int 岛屿 封闭 dfs 1254 grid 数目 size

1254. 统计封闭岛屿的数目

二维矩阵 grid 由 0 (土地)和 1 (水)组成。岛是由最大的4个方向连通的 0 组成的群,封闭岛是一个 完全 由1包围(左、上、右、下)的岛。

请返回 封闭岛屿 的数目。

示例 1:
输入:grid = [[1,1,1,1,1,1,1,0],[1,0,0,0,0,1,1,0],[1,0,1,0,1,1,1,0],[1,0,0,0,0,1,0,1],[1,1,1,1,1,1,1,0]]
输出:2
解释:
灰色区域的岛屿是封闭岛屿,因为这座岛屿完全被水域包围(即被 1 区域包围)。


示例 2:
输入:grid = [[0,0,1,0,0],[0,1,0,1,0],[0,1,1,1,0]]
输出:1


示例 3:
输入:grid = [[1,1,1,1,1,1,1],
             [1,0,0,0,0,0,1],
             [1,0,1,1,1,0,1],
             [1,0,1,0,1,0,1],
             [1,0,1,1,1,0,1],
             [1,0,0,0,0,0,1],
            [1,1,1,1,1,1,1]]
输出:2

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/number-of-closed-islands
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

dfs

先将靠边的陆地全部淹没,然后再寻找岛屿

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

    int closedIsland(vector<vector<int>>& grid) {
        //先将靠边界的岛屿淹掉
        int m=grid.size(),n=grid[0].size();
        //左边界
        for(int i=0;i<m;i++)
            if(grid[i][0]==0)   dfs(grid,i,0);
        //右边界
        for(int i=0;i<m;i++)
            if(grid[i][n-1]==0)    dfs(grid,i,n-1);
        //上边界
        for(int j=0;j<n;j++)
            if(grid[0][j]==0)   dfs(grid,0,j);
        //下边界
        for(int j=0;j<n;j++)
            if(grid[m-1][j]==0)    dfs(grid,m-1,j);
        int res=0;
        for(int i=0;i<m;i++){
            for(int j=0;j<n;j++){
                if(grid[i][j]==0){
                    res++;
                    dfs(grid,i,j);
                }
            }
        }
        return res;
    }
};

标签:int,岛屿,封闭,dfs,1254,grid,数目,size
From: https://www.cnblogs.com/SkyDusty/p/17468195.html

相关文章

  • Leet Code 1684. 统计一致字符串的数目
    /***1684.统计一致字符串的数目**给你一个由不同字符组成的字符串allowed和一个字符串数组words。如果一个字符串的每一个字符都在allowed中,就称这个字符串是*一致字符串。**请你返回words数组中一致字符串的数目。****示例1:**......
  • INSERT 语句中列的数目大于 VALUES 子句中指定的值的数目。VALUES 子句中值的数目必须
    出现这个问题首先就找到了insert语句,找到的insert语句cmd.CommandText="INSERTINTOMessage_FHSQ([contractid],[applytime],[service],[company],[project],[productname],[sub],[quantity],[unit],[amount],[fhck],[fhwl],[examine],[checkout],[readzt])VALUES('"+htb......
  • 猿辅导推出小猿学练机:10.3寸护眼墨水屏+封闭式系统
    5月30日,沉默近两年的猿辅导在智能硬件领域释放重磅动作,推出旗舰型产品小猿学练机。该产品面向全国中小学生,主打学练一体、以练促学,重新定义学练一体化的数字化产品体系。这一动作代表着,猿辅导正式入局1000亿智能硬件市场。2021年以来,我国新增452家学习硬件相关企业。来自弗若斯特沙......
  • 统计得分小于K的子数组数目
    一个数组的分数定义为数组之和乘以数组的长度1.前缀和+二分classSolution{public:longlongcountSubarrays(vector<int>&nums,longlongk){//注意是正整数数组intn=nums.size();longlongres=0;vector<longlong>pr......
  • Linux 中 shell 脚本实现根据gff统计每一个基因的转录本数目
     001、生成基因名称的列表awk-F"\t"'$3=="gene"&&$NF~/gene=/{print$NF}'chr1.gff|sed's/\(.*\)\(gene=[^;]\+\)\(.*\)/\2/'|sort|uniq>gene.list 002、 ......
  • 力扣---1448. 统计二叉树中好节点的数目
    给你一棵根为 root 的二叉树,请你返回二叉树中好节点的数目。「好节点」X定义为:从根到该节点X所经过的节点中,没有任何节点的值大于X的值。 示例1:输入:root=[3,1,4,3,null,1,5]输出:4解释:图中蓝色节点为好节点。根节点(3)永远是个好节点。节点4->(3,4)是路径中......
  • linux 系统中查看总内存、总硬盘、总逻辑CPU数目
     001、总内存[root@PC1test]#free-htotalusedfreesharedbuff/cacheavailableMem:3.7G830M1.8G38M1.1G2.5GSwap:3.9G0B3.9G  002、......
  • 问题解决:TNS-12543: TNS:destination host unreachable
    环境:11.2.0.3ADG(db11g\db11gadg\db11gcas)在自己先前克隆后的环境互相tnsping报错。tnsping本机ok,tnsping其他机器均报错:[oracle@db11g~]$tnspingjingyuTNSPingUtilityforLinux:Version11.2.0.3.0-Productionon13-MAY-202308:09:11Copyright(c)1997,......
  • PSO优化LSTM做时间序列的预测,优化的是隐藏层单元数目,批处理大小,时间窗口大小,学习率等
    PSO优化LSTM做时间序列的预测,优化的是隐藏层单元数目,批处理大小,时间窗口大小,学习率等网络参数。ID:1888668442690309......
  • 封闭式开关柜在线测温技术的应用
    安科瑞虞佳豪传统的测温方式有红外点温仪测温、红外热成像仪测温、试温腊片等方式,这几种方式无法实现24小时全天候测量工作,特别是在一些特定场合下,分散监测、环境封闭、有高压电,无法进行有效测温。在电力系统设备在长期的运行中,往往容易产生老化或过热现象,这些现象如果没有及时......