Rumah >pembangunan bahagian belakang >tutorial php >. Sambungan berlebihan
684. Sambungan berlebihan
Kesukaran: Medium
Topik: carian kedalaman-pertama, carian lebar-pertama, cari kesatuan, graf
Dalam masalah ini, pokok adalah graf yang tidak diarahkan yang disambungkan dan tidak mempunyai kitaran.
Anda diberi graf yang bermula sebagai pokok dengan nod N yang dilabelkan dari 1 hingga N, dengan satu kelebihan tambahan ditambah. Kelebihan tambahan mempunyai dua yang berbeza simpang yang dipilih dari 1 hingga n, dan bukan kelebihan yang sudah ada. Grafik diwakili sebagai tepi array panjang n di mana tepi [i] = [a i , b i ] menunjukkan bahawa terdapat kelebihan antara node a i dan b i dalam graf.
kembali kelebihan yang boleh dikeluarkan supaya graf yang dihasilkan adalah pokok nod n . Sekiranya terdapat banyak jawapan, kembalikan jawapan yang berlaku terakhir dalam input .
Contoh 1:
Contoh 2:
n == edges.length
Mata utama
graf adalahtidak diarahkan dan disambungkan
.: Pengesanan kitaran melalui DFS : Mengembalikan kelebihan : mari kita melaksanakan penyelesaian ini dalam php: 684. Sambungan berlebihan pelaksanaan DFS : Tambahan tepi : kelebihan berlebihan : input : edges = [[1, 2], [1, 3], [2, 3]] Langkah -langkah : output : [2, 3] input : edges = [[1, 2], [2, 3], [3, 4], [1, 4], [1, 5]] Langkah -langkah : output : [1, 4] DFS Traversal : Jumlah kerumitan : Kerumitan ruang : input : [[1, 2], [1, 3], [2, 3]] input : [[1, 2], [2, 3], [3, 4], [1, 4], [1, 5]] Masalahnya boleh diselesaikan dengan cekap menggunakan pendekatan berasaskan untuk mengesan kitaran. Kaedah ini secara dinamik membina graf dan cek untuk tepi berlebihan pada setiap langkah. Penyelesaian ini memastikan ketepatan dengan mematuhi kekangan masalah dan mengeluarkan kelebihan yang membentuk kitaran dan berlaku terakhir dalam input. Pautan kenalan Jika anda mendapati siri ini membantu, sila pertimbangkan untuk memberikan repositori bintang di GitHub atau berkongsi jawatan di rangkaian sosial kegemaran anda? Sokongan anda sangat bermakna bagi saya! Jika anda mahukan kandungan yang lebih berguna seperti ini, jangan ragu untuk mengikuti saya:
Merancang
<?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]
?>
Penjelasan:
Contoh Walkthrough
Contoh 1:
Contoh 2:
Kerumitan masa
Output untuk contoh
Contoh 1:
output : [2, 3]
Contoh 2:
output : [1, 4]
Atas ialah kandungan terperinci . Sambungan berlebihan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!