Menu
CoddyTech

Non-overlapping Intervals

El intervalo i va desde starts[i] hasta ends[i]. Devuelve el número mínimo de intervalos que debes eliminar para que ninguno de los restantes se superponga. Dos intervalos que solo se tocan, cuando uno termina exactamente en el punto donde empieza el otro, no se superponen.

Función

eraseOverlapIntervals(starts: integer-array, ends: integer-array) → integer
startsinteger-array
el inicio de cada intervalo
endsinteger-array
el final de cada intervalo, en el mismo índice que su inicio
Devuelveinteger
el menor número de intervalos que hay que eliminar para que los restantes no se superpongan

Restricciones

  • 1 ≤ starts.length == ends.length ≤ 5000
  • -5 × 104 ≤ starts[i] < ends[i] ≤ 5 × 104
  • Los intervalos no están ordenados. Dos intervalos pueden ser idénticos.

Ejemplos

Entrada
starts = [3, 1, 5, 2]ends = [6, 4, 7, 3]
Salida
2
Explicación
En orden de inicio, los intervalos son [1,4], [2,3], [3,6] y [5,7]. Conserva [2,3] y [3,6], que solo se tocan, y elimina los otros 2. No pueden conservarse tres: [1,4] se superpone con [2,3], y [3,6] se superpone con [5,7].
challenge icon

Para ir más allá

Supón que cada intervalo tiene un valor y quieres obtener el valor total más grande entre los intervalos que no se superponen. ¿Sigue funcionando conservar el intervalo que termina primero?

Restablecer código
def eraseOverlapIntervals(starts, ends):
    # Escribe el código aquí

Prueba #1

Prueba #2

Prueba #3

Argumentos

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

Salida Esperada

2