Menu
CoddyTech

Network Delay Time

Ein Netzwerk hat n Knoten, die von 1 bis n nummeriert sind. Du erhältst seine Verbindungen als Liste times, wobei times[i] = [u, v, w] bedeutet, dass ein von Knoten u gesendetes Signal Knoten v nach w Zeiteinheiten erreicht. Verbindungen funktionieren nur in eine Richtung.

Ein Signal verlässt Knoten k zum Zeitpunkt 0 und breitet sich über alle erreichbaren Verbindungen aus. Gib den Zeitpunkt zurück, zu dem der letzte Knoten das Signal empfängt, oder -1, falls ein Knoten es nie empfängt.

Funktion

networkDelayTime(times: integer-2d-array, n: integer, k: integer) → integer
timesinteger-2d-array
die gerichteten Kanten, jeweils als [u, v, w]
ninteger
die Anzahl der Knoten
kinteger
der Knoten, der das Signal sendet
Gibt zurückinteger
der Zeitpunkt, zu dem der letzte Knoten das Signal empfängt, oder -1

Einschränkungen

  • 2 ≤ n ≤ 3000
  • 1 ≤ times.length ≤ 4000
  • times[i].length = 3
  • 1 ≤ u, v ≤ n und u ≠ v
  • 0 ≤ w ≤ 100
  • Keine zwei Kanten haben sowohl dasselbe u als auch dasselbe v.
  • 1 ≤ k ≤ n

Beispiele

Eingabe
times = [[1, 2, 4], [1, 3, 1], [3, 2, 2], [2, 4, 1]]n = 4k = 1
Ausgabe
4
Erklärung
Knoten 3 empfängt das Signal zum Zeitpunkt 1. Knoten 2 könnte es über seine direkte Verbindung zum Zeitpunkt 4 empfangen, aber über den Weg durch Knoten 3 kommt es bei 1 + 2 = 3 an, und Knoten 4 empfängt es bei 3 + 1 = 4. Knoten 4 ist als Letzter zum Zeitpunkt 4 an der Reihe.

lock icon+16 versteckte Tests beim Einreichen

challenge icon

Weiterführende Frage

Angenommen, das Signal wird schwächer, nachdem es m Verbindungen überquert hat. Wie findest du unter dieser Begrenzung die Zeit, zu der der letzte Knoten es hört?

Code zurücksetzen
def networkDelayTime(times, n, k):
    # Schreibe hier den Code
Testfälle

Fall 1

Fall 2

Fall 3

Eingabe

times = [[1, 2, 4], [1, 3, 1], [3, 2, 2], [2, 4, 1]]
n = 4
k = 1

Erwartet

4