深度优先 求 图中强连通子图的个数

2023-05-16

说明

输入矩阵形式的图,matrix[i][j] 值为 1 说明边 i 与边 j 相连。

定义一个 visited[] 的 Boolean 数组,为 true 表示此边已经访问过。

算法时间复杂度: n的平方
可以优化为: n的平方/2

步骤

1、访问每行数据,如果已经访问过,跳过;
2、如果没有访问过:连通子图数量+1,将此边 visite 设置为 true。并深度遍历此连通子图,将此连通子图的所有边设置为 visited。

public class Practice {

    public static void main(String[] args){
        int[][] num = new int[][]{{1,0,0,1},{0,1,1,0},{0,1,1,1},{1,0,1,1}};
        Practice test = new Practice();
        System.out.println(test.findCircleNum(num));    //输出连通子图数量
    }

    private boolean[] visited;
    private int len;
    
    public int findCircleNum(int[][] isConnected) {
        if(isConnected.length == 0 || isConnected[0].length == 0){
            return 0;
        }
        len = isConnected.length;
        int rs = 0;

        visited = new boolean[len];
        for(int i = 0; i < len; i++){
            visited[i] = false;
        }
        for(int i = 0; i < len; i++){
            if(!visited[i]) {
                rs++;
                visit(isConnected, i);
            }
        }
        return rs;
    }

    public void visit(int[][] graph, int l){
        if(!visited[l]) {
            visited[l] = true;
            for (int i = 0; i < len; i++) {
                if(graph[l][i] == 1){
                    visit(graph, i);
                }
            }
        }
    }
}```

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

深度优先 求 图中强连通子图的个数 的相关文章

随机推荐

  • python使用numpy加载和保存txt文件

    python使用numpy加载和保存txt文件 问题 xff1a 1 如何将array保存到txt文件中 xff1f 2 如何将存到txt文件中的数据读出为ndarray类型 xff1f 解决 xff1a 直接用numpy中的方法 1 nu
  • HTML标签,CSS选择器,属性,盒子模型,浮动

    文章目录 HTML标签 xff0c 表格 xff0c 表单HTML 标签 表格 table表单 form1 表单域 xff0c 表单元素 xff0c 提示信息 CSS选择器 xff0c 属性 xff0c 显示模式 xff0c 背景图 xff
  • SVM连续值预测

    SVM连续值预测 分类问题回归问题一 导入库和数据二 数据预处理三 模型训练和评估 使用svm既可以实现分类问题 xff0c 即输出是标签的种类 xff0c 例如手写数字识别 Iris鸢尾花分类 xff0c 同时也能实现连续值的预测 xff
  • 最新解决git拉取远程仓库失败问题:Failed to connect to github.com port 443: Timed out.

    最新解决git拉取远程仓库失败问题 xff1a Failed to connect to github com port 443 Timed out 本地git拉取 pull 或抓取 fetch 远程github仓库出现 Failed to
  • 回溯算法及剪枝

    回溯算法及剪枝 理论基础模板框架实例思路 剪枝 回溯算法的本质是暴力穷举 xff0c 即使用递归控制for循环嵌套的数量 xff0c 本身不是一个高效的算法 尽管可以使用剪枝来提高效率 xff0c 但是还是改不了穷举的本质 回溯法 xff0
  • MySQL索引的底层实现原理

    索引的底层实现原理 数据库索引是存储在磁盘上的 xff0c 当数据量大时 xff0c 就不能把整个索引全部加载到内存了 xff0c 只能逐一加载每一个磁盘块 xff08 对应索引树的节点 xff09 xff0c 索引树越低 xff0c 越
  • MySQL事务

    事务概念 一个事务是由一条或者多条对数据库操作的SQL语句所组成的一个不可分割的单元 xff0c 只有当事务中的所有操作都正常执行完啦 xff0c 整个事务才会被提交给数据库 xff1b 如果有部分事务处理失败 xff0c 那么事务就要回退
  • MySQL行锁、表锁&间隙锁

    事务隔离级别的实现原理 xff1a 锁 表级锁 amp 行级锁 表级锁 xff1a 对整张表加锁 开销小 xff0c 加锁快 xff0c 不会出现死锁 xff1b 锁粒度大 xff0c 发生锁冲突的概率高 xff0c 并发度低 行级锁 xf
  • sql模糊查询多个条件写法

    单个模糊查询一般使用like xff0c 如果多个可以使用 OR 进行连接 xff0c 不过写样子写法很冗余 xff0c 而且如果多个条件是从表中 select出来的时候这种方法就不可行了 针对这种问题 xff0c 一般都提供了正则表达式的
  • Python datetime.fromtimestamp 遇到的一些坑

    背景 xff1a 调用腾讯某个接口返回的是时间戳的形式 xff0c 本地解析的时间跟腾讯端的时间不一致 xff0c 经过排查发现是本地没有转化为北京时间 xff0c 而腾讯端是默认转换为北京时间的 但是却有一个疑惑 x1f914 xff0c
  • 【ClickHouse】批量写入ClickHouse 的几种方式

    ClickHouse没有官方的Python接口 xff0c 有个第三方的库 xff0c 叫clickhouse driver xff0c 笔者所知道的将数据批量写入的方式不是很多 xff0c 这里列举最常见的3种方式 第一种方式 CSV文件
  • 【redis】redis简单操作(待更新。。)

    span class token keyword import span redis span class token comment 导入redis 模块 span pool span class token operator 61 sp
  • js--客户端存储问题

    1 sessionstorage 2 localstorage 3 例子 xff1a 存储名字 lt body gt lt input type 61 34 text 34 id 61 34 name 34 gt lt input type
  • 【Python】python操作mongo的简单示例(待更新。。)

    span class token comment usr bin python3 span span class token keyword import span pymongo myclient span class token ope
  • 【Linux】清理升级缓存以及无用包

    span class token function sudo span span class token function apt get span autoclean span class token function sudo span
  • jsp 与 servlet 之间传值

    jsp gt servlet 1 input jsp 定义name lt input type 61 34 text 34 name 61 34 cardnum 34 id 61 34 cardnum 34 gt servlet 通过获取
  • 关于oracle表空间不足原因及处理方法

    oracle表空间不足错误代码 xff1a ORA 01688 unable to extend table 等 xff1b 查看剩余表空间的大小 xff1a SELECT UPPER F TABLESPACE NAME 34 表空间名 3
  • 剪枝操作——回溯法的限界思想及其应用:圆排列问题

    我相信人都有自尊 xff0c 而尊重别人的自尊是一种及其高尚的精神 社会中有很多想不到的惨绝人寰的事情 xff0c 有时候发生到了自己身上 有时候发生在自己最亲密的人身上 有时候发生在自己周围人的身上等 这些无不露出一些类似于心理变态vs心
  • Archlinux安装(BIOS)教程

    Archlinux安装 xff08 BIOS xff09 记录一下 建议参考 xff1a ArchWiki 官方安装指导 下载镜像 官网 制作U盘启动盘 rufus 插入U盘 进入BIOS启动U盘 xff0c 选择第一个 连接wifi sp
  • 深度优先 求 图中强连通子图的个数

    说明 输入矩阵形式的图 xff0c matrix i j 值为 1 说明边 i 与边 j 相连 定义一个 visited 的 Boolean 数组 xff0c 为 true 表示此边已经访问过 算法时间复杂度 xff1a n的平方 可以优化