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中文網其他相關文章!