首页 > 其他分享 >Leecode 685. 冗余连接 II

Leecode 685. 冗余连接 II

时间:2024-10-28 14:22:24浏览次数:3  
标签:index int edges II Leecode vector conflictEdge 685 ancestor

分类讨论:两种情况,一是有节点有两个父节点,二是头尾相连

 1 struct UnionFind {
 2     vector <int> ancestor;
 3 
 4     UnionFind(int n) {
 5         ancestor.resize(n);
 6         for (int i = 0; i < n; ++i) {
 7             ancestor[i] = i;
 8         }
 9     }
10 
11     int find(int index) {
12         return index == ancestor[index] ? index : ancestor[index] = find(ancestor[index]);
13     }
14 
15     void merge(int u, int v) {
16         ancestor[find(u)] = find(v);
17     }
18 };
19 
20 class Solution {
21 public:
22     vector<int> findRedundantDirectedConnection(vector<vector<int>>& edges) {
23         int n = edges.size();
24         UnionFind uf = UnionFind(n + 1);
25         auto parent = vector<int>(n + 1);
26         for (int i = 1; i <= n; ++i) {
27             parent[i] = i;
28         }
29         int conflict = -1;
30         int cycle = -1;
31         for (int i = 0; i < n; ++i) {
32             auto edge = edges[i];
33             int node1 = edge[0], node2 = edge[1];
34             if (parent[node2] != node2) {
35                 conflict = i;
36             } else {
37                 parent[node2] = node1;
38                 if (uf.find(node1) == uf.find(node2)) {
39                     cycle = i;
40                 } else {
41                     uf.merge(node1, node2);
42                 }
43             }
44         }
45         if (conflict < 0) {
46             auto redundant = vector<int> {edges[cycle][0], edges[cycle][1]};
47             return redundant;
48         } else {
49             auto conflictEdge = edges[conflict];
50             if (cycle >= 0) {
51                 auto redundant = vector<int> {parent[conflictEdge[1]], conflictEdge[1]};
52                 return redundant;
53             } else {
54                 auto redundant = vector<int> {conflictEdge[0], conflictEdge[1]};
55                 return redundant;
56             }
57         }
58     }
59 };

 

标签:index,int,edges,II,Leecode,vector,conflictEdge,685,ancestor
From: https://www.cnblogs.com/greenofyu/p/18510464

相关文章

  • 立即执行函数表达式(Immediately Invoked Function Expression, IIFE)的学习
    一、立即执行函数表达式(ImmediatelyInvokedFunctionExpression,IIFE)。这种模式在JavaScript中常用于创建一个独立的作用域,以避免变量污染全局命名空间。常见的例子可以分解如下:(function(window){//这里可以写任何需要执行的代码})(window);在这个例子中,funct......
  • 142. 环形链表 II Golang实现
    #题目描述:给定一个链表的头节点head,返回链表开始入环的第一个节点。如果链表无环,则返回null。如果链表中有某个节点,可以通过连续跟踪next指针再次到达,则链表中存在环。为了表示给定链表中的环,评测系统内部使用整数pos来表示链表尾连接到链表中的位置(索引从0开始)。如......
  • PLC 编程和 IIOT 工业物联网的区别是什么
    PLC编程和IIOT工业物联网的区别:1.技术定义和应用范围;2.功能特性对比;3.系统架构差异;4.数据处理方式;5.未来发展趋势。PLC主要负责现场控制和设备直接管理,而IIOT则担负着将设备数据互联互通、优化整体生产流程的任务。1.技术定义和应用范围PLC编程:是指利用一种专门的编程......
  • 代码随想录算法训练营day27| 122.买卖股票的最佳时机II 55. 跳跃游戏 45.跳跃
    学习资料:https://programmercarl.com/0122.买卖股票的最佳时机II.html#算法公开课贪心PART2学习记录:122.买卖股票的最佳时间2(求最大利润,贪心:把所有正数相加;后一天与当天的股票价格差值,若为正就加入利润,若为负,则不加)点击查看代码classSolution:defmaxProfit(self,pr......
  • 计算机如何储存数字和字符,与各种进制的本质,与ASCII码
    前言        我想问大家一个问题:二进制、八进制、十进制、十六进制究竟是计算机中才有的概念,还是可以脱离计算机仅仅作为数学概念而独立存在呢?    答案是后者,如果你不曾想过这个问题,你也就大概不能十分清晰的理解计算机对于数字与字符的存储。    ......
  • 代码随想录算法训练营Day45 | 121. 买卖股票的最佳时机、122.买卖股票的最佳时机II、1
    目录121.买卖股票的最佳时机122.买卖股票的最佳时机II123.买卖股票的最佳时机III121.买卖股票的最佳时机题目121.买卖股票的最佳时机-力扣(LeetCode)给定一个数组prices,它的第i个元素prices[i]表示一支给定股票第i天的价格。你只能选择某一天买入这只......
  • 编写一个简单的Iinput_dev框架
    往期内容本专栏往期内容:input子系统的框架和重要数据结构详解-CSDN博客inputdevice和inputhandler的注册以及匹配过程解析-CSDN博客inputdevice和inputhandler的注册以及匹配过程解析-CSDN博客I2C子系统专栏:专栏地址:IIC子系统_憧憬一下的博客-CSDN博客具体芯片的II......
  • 基于基于基于IIR数字滤波器的设计matlab毕业设计
    引言MATLAB是矩阵实验室(MatrixLaboratory)的简称,是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。MATLAB和Mathematica、Maple并称为三大数学软件。它在数学类科技应......
  • IIS 报错 401.3 的解决方式
    InternetInformationServices(IIS)是Windows自带的一个服务器搭建工具。如果你在配置好一个网站之后打开网页,却发现网页是401错误代码,那么基本就是文件的限权问题。面对这种情况,可以把文件放在不是C盘的地方,或者按照下面的方法修改限权。演示环境Windows1123H2IIS1......
  • leetcode每日一题:3181.执行操作可获得的最大总奖励 II
     题干:读本文前,请先弄懂上一篇中的内容,因为这是对上一篇内容的优化:3180.执行操作可获得的最大总奖励I明白上篇的,访问值的影响、复制、上下行之间的关系和算法后可继续看:上一篇中,我们用二维数组,第二维表示了状态空间。但是,在今日的题目中,提交不行,因为占用的空间太太太......