[código de acceso] 1288. Eliminar intervalos cubiertos

Descripción

Dada una lista de intervalos, elimine todos los intervalos que están cubiertos por otro intervalo en la lista.

El intervalo [a, b) está cubierto por el intervalo [c, d) si y solo si c <= ayb <= d.

Después de hacerlo, devuelve el número de intervalos restantes.

Ejemplo 1:

Input: intervals = [[1,4],[3,6],[2,8]]
Output: 2
Explanation: Interval [3,6] is covered by [2,8], therefore it is removed.

Ejemplo 2:

Input: intervals = [[1,4],[2,3]]
Output: 1

Ejemplo 3:

Input: intervals = [[0,10],[5,12]]
Output: 2

Ejemplo 4:

Input: intervals = [[3,10],[4,10],[5,11]]
Output: 2

Ejemplo 5:

Input: intervals = [[1,2],[1,4],[3,4]]
Output: 1

Restricciones:

  • 1 <= intervalos. Longitud <= 1000
  • intervalos [i] .length == 2
  • 0 <= intervalos [i] [0] <intervalos [i] [1] <= 10 ^ 5
  • Todos los intervalos son únicos.

análisis

El significado de la pregunta es: elimine los subintervalos cubiertos en la matriz de intervalos, esta pregunta es similar a la cuestión de la combinación de intervalos.

  • Usé la idea de la respuesta como referencia. Primero, ordene en orden ascendente según el comienzo del intervalo. Si el intervalo es [inicio, fin], ordene primero según el comienzo y luego ordene en orden descendente según fin.
  • Una vez completada la clasificación, comience el recorrido y solo necesita comparar el final para calcular el número de intervalos que deben retenerse.

Para esta clasificación, puede simularlo usted mismo. La idea general es ordenar de acuerdo con el punto de inicio del intervalo. Si el punto de inicio es el mismo, primero mantenga el punto final más grande, porque el punto final más grande puede cubrir el extremo más pequeño intervalo de puntos.

Código

class Solution:
    def removeCoveredIntervals(self, intervals: List[List[int]]) -> int:
        intervals.sort(key=lambda x:(x[0],-x[1]))
        res=0
        prev_end=0
        for _,end in intervals:
            if(end>prev_end):
                res+=1
                prev_end=end
        return res

referencias

Eliminar el intervalo cubierto

Supongo que te gusta

Origin blog.csdn.net/w5688414/article/details/115036764
Recomendado
Clasificación