684. Redundante Verbindung
Schwierigkeitsgrad: Medium
Themen: Tiefe-First-Suche, Breite-First-Suche, Union Find, Graph
In diesem Problem ist ein Baum ein ungerichteter Graph , der angeschlossen ist und keine Zyklen hat.
Sie erhalten ein Diagramm, das als Baum mit N -Knoten von 1 bis n angeführt wurde und eine zusätzliche Kante hinzugefügt wurde. Die zugesetzte Kante hat zwei von 1 nach N ausgewählte-Schufe und war keine bereits existierende Kante. Der Diagramm wird als Array -Kanten der Länge n dargestellt, wobei die Kanten [i] = [A i , b i ] angeben, dass zwischen den Knoten a i und b i im Diagramm. return
eine Kante, die entfernt werden kann, damit der resultierende Graphen ein Baum von n Knotenist. Wenn es mehrere Antworten gibt, geben Sie die Antwort zurück, die in der Eingabe . auftritt Beispiel 1:
Eingabe:
Eingabe:
n == Kanten.Length
Das Problem redundante Verbindung
fordert uns auf, eine Kante in einem Diagramm zu identifizieren, das entfernt werden kann, um den Diagramm in einen gültigen Baum zu verwandeln. Ein Baum ist ein ungerichtetes Diagramm, das angeschlossen und acyclisch ist. Wir erhalten ein Diagramm, das als Baum begann, aber durch Hinzufügen einer zusätzlichen Kante modifiziert wurde. Unser Ziel ist es, diese zusätzliche Kante zu finden und zurückzugeben.Schlüsselpunkte
Zykluserkennung über DFS :
Rückgabe der Kante :
implementieren wir diese Lösung in PHP: 684. Redundante Verbindung
<?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] ?>
DFS -Implementierung :
Kantenzugabe :
redundante Kante :
Eingabe : Kanten = [1, 2], [1, 3], [2, 3]]
Schritte :
Ausgabe : [2, 3]
Eingabe : Kanten = [[1, 2], [2, 3], [3, 4], [1, 4], [1, 5]]
Schritte :
Ausgabe : [1, 4]
DFS Traversal :
Gesamtkomplexität :
Raumkomplexität :
Eingabe : [[1, 2], [1, 3], [2, 3]]
Ausgabe : [2, 3]
Eingabe : [[1, 2], [2, 3], [3, 4], [1, 4], [1, 5]]
Ausgabe : [1, 4]
Das Problem kann mit einem dfs-basierten Ansatz effizient gelöst werden, um Zyklen zu erkennen. Diese Methode erstellt das Diagramm dynamisch und prüft in jedem Schritt nach redundanten Kanten. Die Lösung sorgt für die Korrektheit, indem die Problembeschränkungen einhalten und die Kante ausgibt, die einen Zyklus bildet und zuletzt im Eingang auftritt.
Kontaktlinks
Wenn Sie diese Serie hilfreich gefunden haben, sollten Sie das repository einen Stern auf GitHub geben oder den Beitrag in Ihren bevorzugten sozialen Netzwerken teilen? Ihre Unterstützung würde mir viel bedeuten!
Wenn Sie mehr hilfreiche Inhalte wie diesen wünschen, können Sie mir gerne folgen:
Das obige ist der detaillierte Inhalt von. Redundante Verbindung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!