802。最終的な安全な状態を見つけます
難易度: medium
トピック:深度検索、幅広い最初の検索、グラフ、トポロジーソート
各ノードが0からn -1にラベル付けされたnノードの指示グラフがあります。グラフは、 0インデックス2D整数アレイグラフで表されます。ノードIに隣接するノードの。つまり、ノードIからグラフの各ノードへのエッジがある[i]。
ノードは、発信エッジがない場合は端子ノードです。ノードは、そのノードから始まる可能性のあるすべてのパスが端子ノード(または別のセーフノード)につながる場合、セーフノードです。
グラフのすべてのセーフノードを含む配列を返します。答えは、ascending順序で並べ替える必要があります 例1:
input:
graph = [[1,2]、[2,3]、[5]、[0]、[5]、[]、[]、]input:graph = [[1,2,3,4]、[1,2]、[3,4]、[0,4]、[]
1< = n< = 104
次の 3 つの状態を持つ訪問済み配列を使用します。
このソリューションを PHP で実装してみましょう: 802。最終的な安全な状態を見つける
<?php /** * @param Integer[][] $graph * @return Integer[] */ function eventualSafeNodes($graph) { ... ... ... /** * go to ./solution.php */ } /** * DFS helper function * * @param $node * @param $graph * @param $visited * @return int|mixed */ function dfs($node, $graph, &$visited) { ... ... ... /** * go to ./solution.php */ } // Example usage: $graph1 = [[1,2],[2,3],[5],[0],[5],[],[]]; $graph2 = [[1,2,3,4],[1,2],[3,4],[0,4],[]]; print_r(eventualSafeNodes($graph1)) . "\n"; // Output: [2,4,5,6] print_r(eventualSafeNodes($graph2)) . "\n"; // Output: [4] ?>
DFS 関数:
メイン関数:
$graph = [[1,2],[2,3],[5],[0],[5],[],[]]; print_r(eventualSafeNodes($graph));
出力:
[2, 4, 5, 6]
$graph = [[1,2,3,4],[1,2],[3,4],[0,4],[]]; print_r(eventualSafeNodes($graph));
出力:
<?php /** * @param Integer[][] $graph * @return Integer[] */ function eventualSafeNodes($graph) { ... ... ... /** * go to ./solution.php */ } /** * DFS helper function * * @param $node * @param $graph * @param $visited * @return int|mixed */ function dfs($node, $graph, &$visited) { ... ... ... /** * go to ./solution.php */ } // Example usage: $graph1 = [[1,2],[2,3],[5],[0],[5],[],[]]; $graph2 = [[1,2,3,4],[1,2],[3,4],[0,4],[]]; print_r(eventualSafeNodes($graph1)) . "\n"; // Output: [2,4,5,6] print_r(eventualSafeNodes($graph2)) . "\n"; // Output: [4] ?>
連絡先リンク
このシリーズが役立つと思った場合は、リポジトリをGitHubにスターに提供するか、お気に入りのソーシャルネットワークで投稿を共有してください。あなたのサポートは私にとって大きな意味があります!
このようなもっと役立つコンテンツが必要な場合は、お気軽にフォローしてください:
以上が。最終的な安全な状態を見つけますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。