当前位置:网站首页>leetcode-684:冗余连接
leetcode-684:冗余连接
2022-07-30 17:38:00 【菊头蝙蝠】
题目
树可以看成是一个连通且 无环 的 无向 图。
给定往一棵 n 个节点 (节点值 1~n) 的树中添加一条边后的图。添加的边的两个顶点包含在 1 到 n 中间,且这条附加的边不属于树中已存在的边。图的信息记录于长度为 n 的二维数组 edges ,edges[i] = [ai, bi] 表示图中在 ai 和 bi 之间存在一条边。
请找出一条可以删去的边,删除后可使得剩余部分是一个有着 n 个节点的树。如果有多个答案,则返回数组 edges 中最后出现的边。
示例 1:

输入: edges = [[1,2], [1,3], [2,3]]
输出: [2,3]
示例 2:
输入: edges = [[1,2], [2,3], [3,4], [1,4], [1,5]]
输出: [1,4]

解题
方法一:并查集
遍历edge,如果发现已经连同的,那么更新res。
最后得到的res,一定是最后出现的并且已连通的。
class UnionFind{
private:
vector<int> parent;
public:
UnionFind(int n){
parent.resize(n);
iota(parent.begin(),parent.end(),0);
}
int find(int index){
if(parent[index]==index) return index;
return parent[index]=find(parent[index]);
}
bool unite(int index1,int index2){
int p1=find(index1);
int p2=find(index2);
if(p1==p2) return false;//如果已经连通,那么返回false
else{
parent[p1]=p2;
return true;
}
}
};
class Solution {
public:
vector<int> findRedundantConnection(vector<vector<int>>& edges) {
vector<int> res;
int n=edges.size();
UnionFind uf(n+1);
for(vector<int>& edge:edges){
if(!uf.unite(edge[0],edge[1])) res=edge;
}
return res;
}
};
边栏推荐
猜你喜欢

SQLServer下载与安装

Prometheus 基本概念

大批程序员可能面临被劝退!

Mo Team - Elegant Violence

LeetCode318: Maximum product of word lengths

【AAAI2020】阿里DMR:融合Matching思想的深度排序模型

Error EPERM operation not permitted, mkdir 'Dsoftwarenodejsnode_cache_cacach Two solutions

Ecplise执行C语言报错:cannot open output file xxx.exe: Permission denied

Servo System of Hydraulic Steering Gear Based on Fuzzy PID

Moralis去中心化Web3应用开发教程
随机推荐
C陷阱与缺陷 第6章 预处理器 6.1 不能忽视宏定义中的空格
web服务通过用户访问请求判断设备来源
优酷视频元素内容召回系统:多级多模态引擎探索
LeetCode 952. 按公因数计算最大组件大小
C陷阱与缺陷 第7章 可移植性缺陷 7.4 字符是有符号数还是无符号数
向量检索基础方法总结
592. Fraction Addition and Subtraction
论文阅读之《Color Constancy Using CNNs》
Excel导入和导出
Summary of String Copy, Concatenation, Comparison and Split Functions (1)
X射线的应用是什么?
mysql刷脏的几种场景以及相关参数
CMake库搜索函数居然不搜索LD_LIBRARY_PATH
数据库系统原理与应用教程(068)—— MySQL 练习题:操作题 90-94(十二):DML 语句练习
Mo Team - Elegant Violence
公司部门来了个00后测试卷王之王,老油条表示真干不过,已经...
什么是无损检测设备?
想要写出好的测试用例,先要学会测试设计
C# 跨程序传图(共享内存块传图)跨exe传图
升级 MDK 5.37 后的问题处理: AC6编译选项, printf, 重启失效等