力扣--并查集684.冗余连接

news2024/11/19 8:44:36

思路分析:

  1. 首先定义了一个Solution类,包含了私有成员变量fa[1001]n,以及三个私有成员函数find()togother()findRedundantConnection()

  2. find()函数用于查找节点的根节点(即所在连通分量的代表节点),采用了递归方式实现路径压缩,以提高查找效率。

  3. togother()函数用于将两个节点连接在一起,即将其中一个节点的父节点更新为另一个节点的父节点。

  4. findRedundantConnection()函数用于寻找冗余连接的边,即能够形成环的边。首先初始化父节点数组fa[],然后遍历所有的边,如果两个节点已经在同一个连通分量中,则说明当前边会形成环,记录下环中的两个节点。最后返回冗余连接的两个节点。

  5. 在主函数中,首先创建Solution类的一个对象,然后调用findRedundantConnection()函数并传入边的二维数组,得到冗余连接的结果。

利用并查集(Union-Find)的思想,通过合并连通分量的方式,来判断图中是否存在环,从而找出冗余的边。


class Solution {
    int fa[1001]; // 用于记录节点的父节点
    int n; // 节点数量

    // 查找节点的根节点(父节点)
    int find(int x) {
        if (fa[x] == x)
            return x;
        else
            return find(fa[x]);
    }

    // 将两个节点连接在一起,即更新其中一个节点的父节点为另一个节点的父节点
    void togother(int x, int y) {
        fa[find(x)] = find(y);
    }

public:
    vector<int> findRedundantConnection(vector<vector<int>>& edges) {
        n = edges.size();

        // 初始化父节点数组,每个节点的父节点初始设为自己
        for (int i = 0; i < n; i++) {
            fa[i] = i;
        }

        int u, v; // 记录冗余连接的两个节点
        // 遍历所有的边
        for (int i = 0; i < n; i++) {
            // 如果两个节点已经在同一个连通分量中,说明当前边会形成环
            if (find(edges[i][0]) == find(edges[i][1])) {
                u = edges[i][0]; // 记录环中的其中一个节点
                v = edges[i][1]; // 记录环中的另一个节点
            }
            // 否则将当前边的两个节点连接在一起
            togother(edges[i][0], edges[i][1]);
        }

        // 返回冗余连接的两个节点,这里返回的是数组edges中最后出现的冗余连接
        return {u, v};
    }
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1547823.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2024最新华为OD机试试题库全 -【二叉树的广度搜索】- C卷

1. 🌈题目详情 1.1 ⚠️题目 有一棵二叉树,每个节点由一个大写字母标识(最多26个节点)。 现有两组字母,分别表示后序遍历(左孩子->右孩子->父节点)和中序遍历(左孩子->父节点->右孩子)的结果,请你输出层序遍历的结果。 1.2 🔣输入要求 每个输入文…

CMC学习系列 (2):EEG-EMG有可能作为运动恢复的生物标志物

CMC学习系列:EEG-EMG有可能作为运动恢复的生物标志物 0. 引言1. 主要贡献2. 方法2.1 显著 bins 数量2.2 偏侧性指数 3. 结果3.1 临床评估3.2 CMC3.3 卒中后CMC随时间变化 4. 讨论和结论5. 总结欢迎来稿 论文地址&#xff1a;https://www.frontiersin.org/journals/neurology/ar…

信号处理--基于混合CNN和transfomer自注意力的多通道脑电信号的情绪分类的简单应用

目录 关于 工具 数据集 数据集简述 方法实现 数据读取 ​编辑数据预处理 传统机器学习模型(逻辑回归&#xff0c;支持向量机&#xff0c;随机森林) 多层感知机模型 CNNtransfomer模型 代码获取 关于 本实验利用结合了卷积神经网络 (CNN) 和 Transformer 组件的混合…

在DasViewer里怎么查看三维模型的坐标系?

量测就可以查看坐标系了&#xff0c;或者查看xml文件中坐标系的代号。量测就可以查看坐标系了&#xff0c;或者查看xml文件中坐标系的代号。 DasViewer是由大势智慧自主研发的免费的实景三维模型浏览器,采用多细节层次模型逐步自适应加载技术,让用户在极低的电脑配置下,也能流畅…

Go语言学习Day3:数据类型、运算符与流程控制

名人说&#xff1a;莫愁千里路&#xff0c;自有到来风。 ——钱珝 创作者&#xff1a;Code_流苏(CSDN)&#xff08;一个喜欢古诗词和编程的Coder&#x1f60a;&#xff09; 目录 1、数据类型①布尔类型②整型③浮点型④string⑤类型转换 2、运算符①算术运算符②逻辑运算符③关…

STM32学习笔记(6_8)- TIM定时器的编码器接口代码

无人问津也好&#xff0c;技不如人也罢&#xff0c;都应静下心来&#xff0c;去做该做的事。 最近在学STM32&#xff0c;所以也开贴记录一下主要内容&#xff0c;省的过目即忘。视频教程为江科大&#xff08;改名江协科技&#xff09;&#xff0c;网站jiangxiekeji.com 现在开…

원클릭으로 주류 전자상거래 플랫폼 상품 상세 데이터 수집 및 접속 시연 예제 (한국어판)

클릭 한 번으로 전자상거래 플랫폼 데이터를 캡처하는 것은 일반적으로 웹 페이지에서 정보를 자동으로 추출 할 수있는 네트워크 파충류 기술과 관련됩니다.그러나 모든 형태의 데이터 수집은 해당 웹 사이트의 사용 약관 및 개인 정보 보호 정책 및 현지 법률 및 규정을 준수…

百度蜘蛛池平台在线发外链-原理以及搭建教程

蜘蛛池平台是一款非常实用的SEO优化工具&#xff0c;它可以帮助网站管理员提高网站的排名和流量。百度蜘蛛池原理是基于百度搜索引擎的搜索算法&#xff0c;通过对网页的内容、结构、链接等方面进行分析和评估&#xff0c;从而判断网页的质量和重要性&#xff0c;从而对网页进行…

JAVA面试大全之基础篇

目录 1、语法基础 1.1、面向对象特性&#xff1f;​​​​​​​ 1.2、a a b 与 a b 的区别 1.3、3*0.1 0.3 将会返回什么? true 还是 false? 1.4、能在 Switch 中使用 String 吗? 1.5、对equals()和hashCode()的理解? 1.6、final、finalize 和 finally 的不同之…

【物联网开源平台】tingsboard二次开发

别看这篇了&#xff0c;这篇就当我的一个记录&#xff0c;我有空我再写过一篇&#xff0c;编译的时候出现了一个错误&#xff0c;然后我针对那一个错误执行了一个命令&#xff0c;出现了绿色的succes,我就以为整个tingsboard项目编译成功了&#xff0c;后面发现的时候&#xff…

怎么清理苹果电脑内存?CleanMyMac X4.15.2最新中文版使用教程

近日&#xff0c;我的苹果电脑似乎遭遇了一点小麻烦&#xff0c;每当深入工作或沉浸于娱乐之时&#xff0c;突如其来的一个警告弹窗就像一颗冰凉的霰弹&#xff0c;打断了我所有的思绪&#xff1a;内存不足&#xff01;&#xff01;&#xff01;怎么清理苹果电脑内存&#xff0…

机器学习——神经网络简单了解

一、神经网络基本概念 神经网络可以分为生物神经网络和人工神经网络 (1)生物神经网络,指的是生物脑内的神经元、突触等构成的神经网络&#xff0c;可以使生物体产生意识&#xff0c;并协助生物体思考、行动和管理各机体活动。 (2)人工神经网络,是目前热门的深度学习的研究…

蔓灵花组织wmRAT分析

wmRAT分析 MD5&#xff1a;35639088a2406aa9e22fa8c03e989983 样本分析 多次调用sleep函数绕过沙箱检测。 创建线程获取username computername 磁盘驱动器个数 通过域名microsoft.com获取ip地址 通过c2服务器域名maxdimservice.com获取ip地址85.239.53.31 408460函数获取…

44 el-dialog 的 appendToBody 属性, 导致 vue 响应式失效

前言 我们经常会碰到 一些 模型和视图 不同步的问题 通常意义上 主要的问题为 列表的某响应式数据更新着更新着 后面就变成非响应式对象了, 然后 就造成了 数据一直在更新, 但是 视图的渲染后面就未渲染了, 这是一个由于 模型上的问题 导致的数据的不在响应式更新 又或者 是…

借力AI+视频号电商,腾讯广告业务这驾马车能跑多远?

腾讯的“功劳簿”又添上了几笔。 日前&#xff0c;腾讯披露了2023年四季度及全年财报。报告显示&#xff0c;2023年&#xff0c;腾讯营收6090.15亿元&#xff0c;同比增长10%&#xff1b;调整后净利润&#xff08;Non-IFRS&#xff09;1576.88亿元&#xff0c;同比增长36%。 …

在stable diffusion中手指纠错的指令和关键词是什么?

在Stable Diffusion模型中&#xff0c;如果您想对生成的图像中的手指进行纠错&#xff0c;您可以在描述中使用特定的指令和关键词来引导模型关注于手指区域并作出调整。 "Perfect hand" &#xff08;完美的手&#xff09; "Five fingers" &#xff08;五个…

中国科学院半导体研究所汪林望:在曙光超级计算机上对第一性原理计算软件LS3DF进行1000万个硅原子模拟

编者荐语&#xff1a; 面对纳米材料等大体系时&#xff0c;电荷补丁法可以计算几千甚至上万原子&#xff0c; 但是电荷补丁法作为非自洽计算&#xff0c;不能给出原子受力&#xff0c;也不能用来弛豫原子坐标。面对摩尔条纹或线性位错等问题&#xff0c;我们需要弛豫原子的坐标…

javaSwing模拟写字板

一、摘要 目前&#xff0c;很多新的技术领域都涉及到了Java语言&#xff0c;Java语言是面向对象编程&#xff0c;并且涉及到网络、多线程等重要的基础知识&#xff0c;因此Java语言也是学习面向对象编程和网络编程的首选语言。此简易JAVA写字板程序&#xff0c;使用Java程序编…

Object Detection--Loss Function:从IoU到CIoU

本篇总结Loss Function中的IoU系列代码。 1. IoU 交并集&#xff0c;两个框交集面积除以并集面积。&#xff08;论写写画画的重要性&#xff09;&#xff08;找原文看看&#xff09; """ box1[x1, y1, x2, y2] box2[x1, y1, x2, y2] return iou ""…

Qt 作业 24/3/26

1、实现闹钟 #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QTime> #include <QLineEdit>QT_BEGIN_NAMESPACE namespace Ui { class Widget; } QT_END_NAMESPACEclass Widget : public QWidget {Q_OBJECTpublic:Widget(QWidget *parent …