算法基础\BFS\DFS

2023-11-03

1.200. 岛屿数量

题目描述:

给你一个由 '1'(陆地)和 '0'(水)组成的的二维网格,请你计算网格中岛屿的数量。

岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。

此外,你可以假设该网格的四条边均被水包围。

示例:

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

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


解答描述:

一个非常典型的BFS广度优先搜索,求连通分量。

代码:

class Solution {
public:
    void BFS(vector<vector<char>> &grid,int s,int t)
    {
        int d_x[4]={0,0,1,-1};
        int d_y[4]={1,-1,0,0};
        int rows=grid.size();
        int cols=grid[0].size();

        queue<pair<int,int>> q;
        q.emplace(s,t);
        grid[s][t]='2';
        while(!q.empty())
        {
            int x=q.front().first;
            int y=q.front().second;
            q.pop();
            for(int i=0;i<4;i++)
            {
                int new_x=x+d_x[i];
                int new_y=y+d_y[i];
                if(new_x>=0 && new_x<rows && new_y>=0 &&new_y<cols && grid[new_x][new_y]=='1')
                {
                    q.emplace(new_x,new_y);
                    grid[new_x][new_y]='2';
                }
            }
        }

    }
    int numIslands(vector<vector<char>>& grid) {
        
        int rows=grid.size();
        int cols=grid[0].size();
        int islans=0;
        for(int i=0;i<rows;i++)
        {
            for(int j=0;j<cols;j++)
            {
                if(grid[i][j]=='1')
                {
                    islans++;
                    BFS(grid,i,j);
                    
                }
            }
        }
        return islans;
    }
};

2.547. 省份数量

题目描述:

有 n 个城市,其中一些彼此相连,另一些没有相连。如果城市 a 与城市 b 直接相连,且城市 b 与城市 c 直接相连,那么城市 a 与城市 c 间接相连。

省份 是一组直接或间接相连的城市,组内不含其他没有相连的城市。

给你一个 n x n 的矩阵 isConnected ,其中 isConnected[i][j] = 1 表示第 i 个城市和第 j 个城市直接相连,而 isConnected[i][j] = 0 表示二者不直接相连。

返回矩阵中 省份 的数量。

示例:


解答描述:

 该题可以把各个城市看做图的节点,城市之间的连线看做边,看做图的遍历,对每个节点,如果没有被访问过且有相邻的边的话,就深度遍历遍历下去。

代码

class Solution {
public:
    
    void DFS(vector<vector<int>> & isConnected,vector<int> &visited,int s)
    {
        for(int i=0;i<isConnected.size();i++)
        {
           if(isConnected[s][i]==1 && !visited[i])
           {
               visited[i]=1;
               DFS(isConnected,visited,i);
           }
        }
    }
    int findCircleNum(vector<vector<int>>& isConnected) {
        int n=isConnected.size();
        vector<int> visited(n,0);
        int provinces=0;
        for(int i=0;i<n;i++)
        {
           if(!visited[i])
           {
               visited[i]=1;
               DFS(isConnected,visited,i);
               provinces++;
           }
        }
        return provinces;
    }
};

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

算法基础\BFS\DFS 的相关文章

随机推荐

  • Linux nrm 运行失败,linux – npm安装失败

    我首先要说的是 我没有在终端或使用node js工作的经验 同事离开度假 我试图按照他离开的说明在我们的演示服务器上设置他的应用程序 我可以在本地运行所有内容 但是在安装socket io模块的服务器上遇到问题 安装了python 安装了n
  • The driver is automatically registered via the SPI -这是啥含义?

    jdbc Driver 被自动注册了 这里面牵扯到几件事 一一道来 1 何为SPI 它是如何把Driver加载进去的 SPI 全名 Service Provider Interface 是一种服务发现机制 它通过在ClassPath路径下的
  • 1094 谷歌的招聘 (20 分)

    2004 年 7 月 谷歌在硅谷的 101 号公路边竖立了一块巨大的广告牌 如下图 用于招聘 内容超级简单 就是一个以 com 结尾的网址 而前面的网址是一个 10 位素数 这个素数是自然常数 e 中最早出现的 10 位连续数字 能找出这个
  • 什么是动态住宅代理?

    随着网络的迅速发展 许多人对代理IP已经有了比较深刻的认识 并且广泛地运用到了各自的业务中 尤其在跨境的相关业务中表现尤其卓越 对于代理IP的类别 也需要根据自己的业务类型具体选择最合适的 那么今天就给大家具体介绍动态住宅IP代理这一类型
  • 蓝桥杯-训练-算法思维篇01

    理论概念篇 1 基础类 概览 评判 复杂度 思维 枚举 递归 二分 分治 动态规划 优先搜索 贪心算法 2 排序类 3 实现语言 语言 C C
  • flask模板

    代码块的使用 返回一个模板网页 文件目录结构 变量代码块使用 app py部分 index html网页部分 网页预览 控制代码块使用 index html网页部分 网页预览 返回一个模板网页 文件目录结构 flask static tem
  • Java版本+企业电子招投标系统源代码之电子招投标系统建设的重点和未来趋势

    计算机与网络技术的不断发展 推动了社会各行业信息化的步伐 时至今日 电子政务 电子商务已经非常普及 云计算 大数据 工业4 0 互联网 等发展理念也逐步深入人心 如何将传统行业与互联网科技有效结合起来 产生1 1 2的效果 不仅是每一个管理
  • [架构之路-182]-《软考-系统分析师》-19- 系统可靠性分析与设计 - 概览

    前言 可靠性工程是研究产品生命周期中故障的发生 发展规律 达到预防故障 消灭故 障 提高产品可用性的工程技术 信息系统的可靠性是指系统在满足一定条件的应用环境中能够正常工作的能力 可以按一般工程系统的可靠性标准进行定性评价 也可以通过平均无
  • 分享24个Python接单平台,有技术等于有收入!

    一 Python兼职种类 接私活刚学会python那会 就有认识的朋友介绍做一个网站的私活 当时接单赚了4K 后又自己接过开发网站后台接口 做数据处理等事情 都赚了一些 接私活指的是利用自己的技术 在业余时间搞定用户整块需求 对方在开始前预
  • Java自动化框架配置监听器生成测试报告邮件发送

    TestNG官网 https testng org doc documentation main html introduction TestNG博客 https www jianshu com p 8a729de618b6 一 接口自动化
  • JMETER接口测试_参数化和关联实现注册、登录和查询

    JMETER接口测试 参数化和关联 实现如下 1 注册接口 实现参数化 2 登录接口 关联用第一步中的用户和密码 3 博文查询接口 关联登录接口返回的token和userid 1 添加Thread Group 2 添加HTTP Reques
  • NameNode: Permission denied&无法启动Hadoop解决方法

    NameNode Permission denied publickey gssapi keyex gssapi with mic password 就是这个原因 这个问题的出现主要是因为没有给authorized keys授权 解决方法如
  • VMware虚拟机安装MacOS Big Sur

    之前完善了vm安装Windows系统的教程 今天给大家分享一个vm安装MacOS的教程 我们今天用macOS Big Sur版本来做教程演示 注 使用VMware安装MacOS哪怕配置给的高也会出现体验上的不佳 大家可以尽可能调高适当的配置
  • ElasticSearch 双数据中心建设在新网银行的实践

    本文公众号读者飞熊的投稿 本文主要讲述了ElasticSearch 双数据中心建设在新网银行的实践 作者简介 飞熊 目前就职于新网银行大数据中心 主要从事大数据实时计算和平台开发相关工作 对Flink Spark 以及ElasticSear
  • goland语法面试题

    文章目录 1 关于 switch 语句 下面说法正确的是 2 下面代码能编译通过吗 可以的话 输出什么 3 interface 是可以指向任意对象的 Any 类型 是否正确 4 下面的代码有什么问题 1 关于 switch 语句 下面说法正
  • Unity5热更新ILRuntime 使用 Protobuf3.0

    Unity5热更新ILRuntime 使用 Protobuf3 0 须知 1 pb3官方用到了C 很多的新语法 所以在unity主工程中直接撸码是不可以的 还好github上面有同僚作了framework35版的 2 ILrt中的类目前是不
  • R语言与面向对象的编程(3):R6类

    专注系列化 高质量的R语言教程 本号已支持快捷转载 无需白名单即可转载 本系列将介绍R语言中三个与面向对象的编程 Object Oriented Programming OOP 相关的工具包 proto R6和基础包methods 这是一个
  • python中,@和-> 代表什么?

    今天把代码放到Hadoop平台时调试代码的时候报错 但是在本地测试并没有什么问题 然后可查看了下代码 报错的地方这么定义的 看到这个符号觉得很奇怪 因为在Python中确实没见过这个符号 后来查了一下 参考这个博主写的 https blog
  • noip2008 火柴棒等式 (暴力枚举)

    P1496火柴棒等式 Accepted 标签 搜索 NOIP提高组2008 描述 给你n根火柴棍 你可以拼出多少个形如 A B C 的等式 等式中的A B C是用火柴棍拼出的整数 若该数非零 则最高位不能是0 用火柴棍拼数字0 9的拼法如图
  • 算法基础\BFS\DFS

    1 200 岛屿数量 题目描述 给你一个由 1 陆地 和 0 水 组成的的二维网格 请你计算网格中岛屿的数量 岛屿总是被水包围 并且每座岛屿只能由水平方向和 或竖直方向上相邻的陆地连接形成 此外 你可以假设该网格的四条边均被水包围 示例 示