684。冗長接続
難易度: medium
トピック:深さ第一検索、幅広い最初の検索、ユニオンファインド、グラフ
この問題では、ツリーは接続されていてサイクルがない1からNにラベル付けされたnノードを備えたツリーとして始まり、1つのエッジが追加されたグラフが与えられます。追加されたエッジには、1からnまで選択された2つの>異なる
頂点があり、すでに存在していたエッジではありませんでした。グラフは、長さnの配列エッジとして表されます。ここでは、エッジ[i] = [ai、bi]は、ノードa i およびb i。 結果のグラフがnノードのツリーになるように削除できるエッジを返します
。複数の回答がある場合は、を返します 例1:
input:
input:
n == edges.length
3< = n< = 1000グラフは冗長エッジを削除した後の結果のグラフにはサイクルがない必要があります。
答えは、複数の有効なソリューションの場合、入力で最後に表示されるエッジを返す必要があります。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] ?>
トラバーサル中にターゲットノードに到達した場合、パスが存在します。
冗長エッジ:
例1:
エッジを処理します: [1、2]→グラフを追加:{1:[2]、2:[1]}
[1、3]→グラフを追加:{1:[2、3]、2:[1]、3:[1]} チェック[2、3]:dfsはパスを見つけます→[2、3]。
手順:
エッジを処理します: [1、2]→グラフを追加:{1:[2]、2:[1]}
完全な複雑さ:
スペースの複雑さ:
input:[[1、2]、[1、3]、[2、3]]
output:[2、3]
input:[[1、2]、[2、3]、[3、4]、[1、4]、[1、5]]
output :[1、4]
dfsベースのアプローチを使用して、サイクルを検出するために問題を効率的に解決できます。このメソッドはグラフを動的に構築し、各ステップで冗長エッジをチェックします。このソリューションは、問題の制約を順守し、サイクルを形成し、入力で最後に発生するエッジを出力することにより、正確性を保証します。
連絡先リンクこのシリーズが役立つと思った場合は、リポジトリをGithubでスター
に提供するか、お気に入りのソーシャルネットワークで投稿を共有することを検討してください。あなたのサポートは私にとって大きな意味があります!このようなもっと役立つコンテンツが必要な場合は、お気軽にフォローしてください:
linkedIn以上が。冗長接続の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。