Rumah >pembangunan bahagian belakang >tutorial php >. Cari negeri selamat akhirnya
802. Cari Keadaan Selamat Akhirnya
Kesukaran: Sederhana
Topik: Carian Pertama Kedalaman, Carian Luas-Pertama, Graf, Isih Topologi
Terdapat graf terarah bagi n nod dengan setiap nod dilabelkan dari 0 hingga n - 1. Graf diwakili oleh 0-diindeks graf tatasusunan integer 2D dengan graf[i] ialah tatasusunan integer daripada nod bersebelahan dengan nod i, bermakna terdapat tepi dari nod i ke setiap nod dalam graf[i].
Nod ialah nod terminal jika tiada tepi keluar. Nod ialah nod selamat jika setiap laluan yang mungkin bermula dari nod itu menuju ke nod terminal (atau nod selamat yang lain).
Kembalikan tatasusunan yang mengandungi semua nod selamat graf. Jawapan hendaklah disusun mengikut urutan menaik.
Contoh 1:
Contoh 2:
Kekangan:
Penyelesaian:
Kami perlu mengenal pasti semua nod selamat dalam graf. Ini melibatkan pemeriksaan jika bermula dari nod tertentu, setiap laluan akhirnya mencapai nod terminal atau nod selamat yang lain. Penyelesaiannya menggunakan Depth-First Search (DFS) untuk mengesan kitaran dan mengklasifikasikan nod sebagai selamat atau tidak selamat.
kami menggunakan array yang dikunjungi dengan tiga negeri:
mari kita melaksanakan penyelesaian ini dalam php: 802. Cari negeri selamat akhirnya
<?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] ?>
fungsi DFS :
Fungsi utama :
$graph = [[1,2],[2,3],[5],[0],[5],[],[]]; print_r(eventualSafeNodes($graph));
output:
[2, 4, 5, 6]Contoh 2:
$graph = [[1,2,3,4],[1,2],[3,4],[0,4],[]]; print_r(eventualSafeNodes($graph));
output:
<?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] ?>
Penyelesaian ini dengan cekap menentukan nod selamat menggunakan DFS, memastikan kekangan masalah dipenuhi.
Pautan Kenalan
Jika anda mendapati siri ini membantu, sila pertimbangkan untuk memberi repositori bintang di GitHub atau berkongsi siaran pada rangkaian sosial kegemaran anda ?. Sokongan anda amat bermakna bagi saya!
Jika anda mahukan kandungan yang lebih berguna seperti ini, sila ikuti saya:
Atas ialah kandungan terperinci . Cari negeri selamat akhirnya. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!