Menu
CoddyTech

Non-overlapping Intervals

O intervalo i vai de starts[i] até ends[i]. Retorne o menor número de intervalos que você precisa remover para que nenhum par dos intervalos restantes se sobreponha. Dois intervalos que apenas se tocam, quando um termina exatamente no ponto em que o outro começa, não se sobrepõem.

Função

eraseOverlapIntervals(starts: integer-array, ends: integer-array) → integer
startsinteger-array
o início de cada intervalo
endsinteger-array
o final de cada intervalo, no mesmo índice que seu início
Retornainteger
o menor número de intervalos a remover para que os restantes não se sobreponham

Restrições

  • 1 ≤ starts.length == ends.length ≤ 5000
  • -5 × 104 ≤ starts[i] < ends[i] ≤ 5 × 104
  • Os intervalos não estão ordenados. Dois intervalos podem ser idênticos.

Exemplos

Entrada
starts = [3, 1, 5, 2]ends = [6, 4, 7, 3]
Saída
2
Explicação
Na ordem de início, os intervalos são [1,4], [2,3], [3,6] e [5,7]. Mantenha [2,3] e [3,6], que apenas se tocam, e remova os outros 2. Três não podem permanecer: [1,4] se sobrepõe a [2,3], e [3,6] se sobrepõe a [5,7].
challenge icon

Para ir além

Suponha que cada intervalo tenha um valor e você queira o maior valor total entre intervalos que não se sobrepõem. Manter o intervalo que termina primeiro ainda funciona?

Redefinir código
def eraseOverlapIntervals(starts, ends):
    # Escreva o código aqui

Teste #1

Teste #2

Teste #3

Argumentos

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

Saída Esperada

2