Menu
CoddyTech

Non-overlapping Intervals

L’intervalle i va de starts[i] à ends[i]. Retournez le plus petit nombre d’intervalles que vous devez supprimer afin qu’aucun des intervalles restants ne se chevauche. Deux intervalles qui se touchent uniquement, lorsque l’un se termine exactement au point où l’autre commence, ne se chevauchent pas.

Fonction

eraseOverlapIntervals(starts: integer-array, ends: integer-array) → integer
startsinteger-array
le début de chaque intervalle
endsinteger-array
la fin de chaque intervalle, au même indice que son début
Renvoieinteger
le plus petit nombre d’intervalles à supprimer pour que les autres ne se chevauchent pas

Contraintes

  • 1 ≤ starts.length == ends.length ≤ 5000
  • -5 × 104 ≤ starts[i] < ends[i] ≤ 5 × 104
  • Les intervalles ne sont pas triés. Deux intervalles peuvent être identiques.

Exemples

Entrée
starts = [3, 1, 5, 2]ends = [6, 4, 7, 3]
Sortie
2
Explication
Dans l’ordre de début, les intervalles sont [1,4], [2,3], [3,6] et [5,7]. Gardez [2,3] et [3,6], qui se touchent seulement, et supprimez les 2 autres. Trois intervalles ne peuvent pas être conservés : [1,4] chevauche [2,3], et [3,6] chevauche [5,7].
challenge icon

Pour aller plus loin

Supposons que chaque intervalle ait une valeur et que tu veuilles obtenir la valeur totale maximale parmi les intervalles qui ne se chevauchent pas. Choisir l’intervalle qui se termine le plus tôt fonctionne-t-il toujours ?

Réinitialiser le code
def eraseOverlapIntervals(starts, ends):
    # Écrivez le code ici

Test #1

Test #2

Test #3

Arguments

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

Résultat attendu

2