Menu
CoddyTech

Non-overlapping Intervals

L’intervallo i va da starts[i] a ends[i]. Restituisci il numero minimo di intervalli da rimuovere affinché nessuno dei rimanenti si sovrapponga. Due intervalli che si toccano soltanto, in cui uno termina esattamente nel punto in cui inizia l’altro, non si sovrappongono.

Funzione

eraseOverlapIntervals(starts: integer-array, ends: integer-array) → integer
startsinteger-array
l'inizio di ogni intervallo
endsinteger-array
alla fine di ogni intervallo, allo stesso indice del suo inizio
Restituisceinteger
il minor numero di intervalli da rimuovere affinché i restanti non si sovrappongano

Vincoli

  • 1 ≤ starts.length == ends.length ≤ 5000
  • -5 × 104 ≤ starts[i] < ends[i] ≤ 5 × 104
  • Gli intervalli non sono ordinati. Due intervalli possono essere identici.

Esempi

Input
starts = [3, 1, 5, 2]ends = [6, 4, 7, 3]
Output
2
Spiegazione
In ordine di inizio, gli intervalli sono [1,4], [2,3], [3,6] e [5,7]. Mantieni [2,3] e [3,6], che si toccano soltanto, e rimuovi gli altri 2. Non è possibile mantenerne tre: [1,4] si sovrappone a [2,3] e [3,6] si sovrappone a [5,7].
challenge icon

Per approfondire

Supponiamo che ogni intervallo abbia un valore e che tu voglia ottenere il valore totale più alto tra gli intervalli che non si sovrappongono. Continuare a scegliere l’intervallo che termina per primo funziona ancora?

Ripristina il codice
def eraseOverlapIntervals(starts, ends):
    # Scrivi il codice qui

Test #1

Test #2

Test #3

Argomenti

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

Output atteso

2