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< = a
未取向和
删除冗余边缘后所得的图形必须没有周期。 答案应返回输入中出现的最后一个
的边缘,如果有多个有效的解决方案。 循环检测:
如果检测到一个周期,请返回当前边缘作为冗余连接。
dfs实现
:
<?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] ?>
edge Addad
如果已经存在路径,请在形成周期时返回当前边缘。
>输入:edges = [[1,2],[1,3],[2,3]] 步骤
添加[1,3]→图:{1:[2,3],2:[1],3:[1]} 检查[2,3]:DFS找到路径→返回[2,3]。
>输出
添加[1,2]→图:{1:[2],2:[1]}
添加[2,3]→图:{1:[2],2:[1,3],3:[2]}检查[1,4]:DFS找到路径→返回[1,4]。
输出
:[1,4]总复杂度
:空间复杂度:
>输入:[[[1,2],[1,3],[2,3]]
>输出:[2,3]
> input :[[[1,2],[2,3],[3,4],[1,4],[1,5]]
:[1,4]
如果您发现此系列有帮助,请考虑在Github上给出 >
如果您想要这样的更多有用的内容,请随时关注我:>
LinkedIn
以上是。冗余连接的详细内容。更多信息请关注PHP中文网其他相关文章!