684。冗余连接
难度:中等
>>主题:深度优先搜索,广度优先搜索,联合查找,图形
在这个问题中,一棵树是连接且没有循环的无向图。 >您获得了一个图形,该图是从1到n标记的n个节点开始的树,并增加了一个边缘。添加的边缘具有从1到n选择的两个不同的
的顶点,并且不是已经存在的边缘。该图表示为长度为n的数组边缘,其中边缘[i] = [ai ,bi]表明节点ai 返回可以删除的边缘,以便结果图是n节点的树。如果有多个答案,请返回在输入。
>>示例1:
>输入: edges = [[1,2],[1,3],[2,3]]
>输出: [2,3]
edges = [[1,2],[2,3],[3,4],[1,4],[1,5]]
1 i i
该图是未取向
和删除冗余边缘后所得的图形必须没有周期。 答案应返回输入中出现的
最后一个 循环检测:
返回边缘:
解析输入边缘。
否则,将边缘添加到邻接列表中。
如果找不到冗余边缘,则返回空结果(尽管这不会按照问题的限制发生)。<?php /** * @param Integer[][] $edges * @return Integer[] */ function findRedundantConnection($edges) { ... ... ... /** * go to ./solution.php */ } /** * Helper function to perform DFS and check connectivity * * @param $src * @param $target * @param $visited * @param $adjList * @return bool */ private function isConnected($src, $target, &$visited, &$adjList) { ... ... ... /** * go to ./solution.php */ } // Example usage: $edges1 = [[1,2],[1,3],[2,3]]; $edges2 = [[1,2],[2,3],[3,4],[1,4],[1,5]]; print_r(findRedundantConnection($edges1)) . "\n"; // Output: [2,3] print_r(findRedundantConnection($edges2)) . "\n"; // Output: [1,4] ?>
如果在边缘的顶点之间不存在路径,请将边缘添加到邻接列表中,然后继续进行下一个边缘。
如果已经存在路径,请在形成周期时返回当前边缘。
>将邻接列表初始化为[]。
检查[2,3]:dfs找到路径→返回[2,3]。
:
>将邻接列表初始化为[]。处理边缘:
添加[1,2]→图:{1:[2],2:[1]}dfs traversal
对于每个边缘,我们执行一个dfs来检查连接。
,其中
v由于我们为每个边缘执行dfs,因此总体复杂性为
o(e×(v e))。空间复杂度
:输出示例
示例2:
以上就是冗余连接的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号