Menu
CoddyTech

Non-overlapping Intervals

Das Intervall i reicht von starts[i] bis ends[i]. Gib die kleinste Anzahl von Intervallen zurück, die du entfernen musst, damit sich keine zwei der übrigen überlappen. Zwei Intervalle, die sich nur berühren, wobei das eine genau an dem Punkt endet, an dem das andere beginnt, überlappen sich nicht.

Funktion

eraseOverlapIntervals(starts: integer-array, ends: integer-array) → integer
startsinteger-array
der Anfang jedes Intervalls
endsinteger-array
das Ende jedes Intervalls, am selben Index wie dessen Anfang
Gibt zurückinteger
die geringste Anzahl an Intervallen, die entfernt werden müssen, damit sich die übrigen nicht überschneiden

Einschränkungen

  • 1 ≤ starts.length == ends.length ≤ 5000
  • -5 × 104 ≤ starts[i] < ends[i] ≤ 5 × 104
  • Die Intervalle sind nicht sortiert. Zwei Intervalle können identisch sein.

Beispiele

Eingabe
starts = [3, 1, 5, 2]ends = [6, 4, 7, 3]
Ausgabe
2
Erklärung
In der Startreihenfolge lauten die Intervalle [1,4], [2,3], [3,6] und [5,7]. Behalte [2,3] und [3,6], die sich nur berühren, und entferne die anderen 2. Drei können nicht bleiben: [1,4] überschneidet sich mit [2,3], und [3,6] überschneidet sich mit [5,7].
challenge icon

Weiterführende Frage

Angenommen, jedes Intervall hat einen Wert und du möchtest den größten Gesamtwert unter den Intervallen ermitteln, die sich nicht überschneiden. Funktioniert es weiterhin, das Intervall zu behalten, das zuerst endet?

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

Test #1

Test #2

Test #3

Argumente

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

Erwartete Ausgabe

2