Menu
CoddyTech

Merge Intervals

Du erhältst eine Menge von Intervallen, wobei jedes ein Bereich ganzer Zahlen von einem Anfang bis zu einem Ende ist. Fasse jede Gruppe überlappender Intervalle zu einem Intervall zusammen, das die gesamte Gruppe abdeckt, und gib die zusammengefassten Intervalle nach Anfang sortiert zurück. Intervalle, die sich nur berühren, wie [1, 4] und [4, 5], gelten als überlappend.

Die Intervalle werden als zwei Arrays gleicher Länge übergeben: Intervall i ist [starts[i], ends[i]]. Du gibst ein 2D-Array zurück, eine Liste von [start, end]-Paaren.

Funktion

mergeIntervals(starts: integer-array, ends: integer-array) → integer-2d-array
startsinteger-array
der Anfang jedes Intervalls
endsinteger-array
das Ende jedes Intervalls, am selben Index wie sein Anfang
Gibt zurückinteger-2d-array
die zusammengeführten Intervalle als [start, end]-Paare, nach start sortiert

Einschränkungen

  • 1 ≤ starts.length == ends.length ≤ 104
  • 0 ≤ starts[i] ≤ ends[i] ≤ 104
  • Die Intervalle treffen in beliebiger Reihenfolge ein.
  • Intervalle, die sich nur an einem Ende berühren, gelten als überlappend.

Beispiele

Eingabe
starts = [5, 1, 12, 3]ends = [7, 4, 14, 6]
Ausgabe
[[1, 7], [12, 14]]
Erklärung
Nach Start sortiert überschneidet sich [1, 4] mit [3, 6], das sich wiederum mit [5, 7] überschneidet, sodass die drei zu [1, 7] zusammengefasst werden. [12, 14] beginnt nach 7 und bleibt für sich.
challenge icon

Weiterführende Frage

Die Intervalle liegen bereits zusammengeführt und nach Start sortiert vor, und du musst ein neues Intervall hinzufügen. Kannst du die zusammengeführte Liste in O(n)-Zeit zurückgeben, ohne erneut zu sortieren?

Code zurücksetzen
def mergeIntervals(starts, ends):
    # Schreibe hier den Code

Test #1

Test #2

Argumente

starts = [5, 1, 12, 3]
ends = [7, 4, 14, 6]

Erwartete Ausgabe

[[1, 7], [12, 14]]