岛屿数量(NC109/考察次数Top41/难度中等)

该博客介绍了一道关于计算01矩阵中岛屿数量的算法题。题目要求将上下左右相邻的1视为同一岛屿,输入为一个01矩阵,输出为岛屿的总数。博主提供了C++的解决方案,并表示会发布更多算法题的通俗讲解视频,帮助读者提升技能,目标是进大厂。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

描述:
给一个01矩阵,1代表是陆地,0代表海洋, 如果两个1相邻,那么这两个1属于同一个岛。我们只考虑上下左右为相邻。
岛屿: 相邻陆地可以组成一个岛屿(相邻:上下左右) 判断岛屿个数。

示例1
输入:
[[1,1,0,0,0],[0,1,0,1,1],[0,0,0,1,1],[0,0,0,0,0],[0,0,1,1,1]]
返回值:
3
(题目来自牛客网)

用C++实现如下

class Solution {
public:
    /**
     * 判断岛屿数量
     * @param grid char字符型vector<vector<>> 
     * @return int整型
     */
    int solve(vector<vector<char> >& grid) {
        // write code here
        int count = 0;
        for(int i=0; i<grid.size(); ++i)               //负责行遍历
        {
            for(int j=0; j<grid[0].size(); ++j)        //负责一行的每一列的遍历
            {
                if(grid[i][j]=='1')                    //碰到是1的,岛屿数量加1,然后处理一下
                {
                    isIland(grid, i, j);               //处理岛屿的函数
                    ++count;                           //数量++
                }
            }
        }
        return count;
    }
    
    //处理岛屿的函数,如果当
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值