Menu
CoddyTech

Redundant Connection

Ein Netzwerk begann als Baum: n Knoten, nummeriert von 1 bis n, verbunden durch n-1 ungerichtete Kanten ohne Zyklus. Dann wurde eine weitere Kante zwischen zwei Knoten hinzugefügt, die nicht direkt verbunden waren, sodass die Liste edges nun n Kanten und genau einen Zyklus enthält.

Gib eine Kante zurück, die du entfernen kannst, sodass die übrigen n-1 Kanten wieder einen Baum bilden. Wenn mehrere Kanten infrage kommen, gib diejenige zurück, die zuletzt in edges erscheint, als Paar [a, b] genau so, wie es dort geschrieben steht.

Funktion

findRedundantConnection(edges: integer-2d-array) → integer-array
edgesinteger-2d-array
die n ungerichteten Kanten, jeweils ein Paar [a, b] von Knoten, die von 1 an nummeriert sind
Gibt zurückinteger-array
die Zykluskante, die zuletzt in edges erscheint, so wie sie dort steht

Einschränkungen

  • 3 ≤ n ≤ 5000, wobei n = edges.length
  • edges[i] = [a, b] mit 1 ≤ a, b ≤ n und a ≠ b
  • Keine Kante kommt zweimal vor, auch nicht in umgekehrter Richtung.
  • Die Kanten verbinden alle n Knoten und enthalten genau einen Zyklus.

Beispiele

Eingabe
edges = [[1, 2], [1, 3], [2, 3]]
Ausgabe
[2, 3]
Erklärung
Die drei Kanten bilden das Dreieck 1, 2, 3, sodass das Entfernen einer beliebigen Kante einen Baum übrig lässt. [2, 3] steht in der Liste zuletzt.
challenge icon

Weiterführende Frage

Wenn die Kanten gerichtet wären und der ursprüngliche Graph ein gewurzelter Baum wäre, welche Kante würdest du entfernen, wenn die zusätzliche Kante dazu führt, dass ein Knoten zwei Eltern hat?

Code zurücksetzen
def findRedundantConnection(edges):
    # Schreibe hier den Code

Test #1

Test #2

Argument

edges = [[1, 2], [1, 3], [2, 3]]

Erwartete Ausgabe

[2, 3]