Pregunta de pincel 76-intervalo de fusión

115. Intervalo de fusión

Enlace del título

Fuente: LeetCode
Enlace: https://leetcode-cn.com/problems/merge-intervals

Descripción del título

Dado un conjunto de intervalos, combine todos los intervalos superpuestos.

Ejemplo 1:

Entrada: [[1,3], [2,6], [8,10], [15,18]]
Salida: [[1,6], [8,10], [15,18]]
Explicación: El intervalo [1,3] y [2,6] se superponen y los fusionan en [1,6].
Ejemplo 2:

Entrada: [[1,4], [4,5]]
Salida: [[1,5]]
Explicación: Los intervalos [1,4] y [4,5] pueden considerarse intervalos superpuestos.

Mas dificil

Intervalo de superposición: el valor del intervalo derecho del intervalo actual es mayor que el valor del intervalo izquierdo del intervalo actual, que es el intervalo superpuesto.El valor del intervalo izquierdo del intervalo anterior del intervalo actual se toma como el intervalo izquierdo del intervalo de superposición, y el valor del intervalo frontal del intervalo actual se toma. El valor máximo del valor del intervalo correcto y el valor del intervalo correcto del intervalo actual se usa como el intervalo correcto del intervalo superpuesto.

Análisis de tema

  1. Intervalo de superposición: el valor del intervalo derecho del intervalo actual es mayor que el valor del intervalo izquierdo del intervalo actual, que es el intervalo superpuesto.El valor del intervalo izquierdo del intervalo anterior del intervalo actual se toma como el intervalo izquierdo del intervalo de superposición, y el valor del intervalo frontal del intervalo actual se toma. El valor máximo del valor del intervalo correcto y el valor del intervalo correcto del intervalo actual se usa como el intervalo correcto del intervalo superpuesto.
  2. Tome el ejemplo 1 como ejemplo: [[1,3], [2,6], [8,10], [15,18]], donde 3> 2, lo que indica que hay un intervalo de superposición, 3 <6, por lo tanto, el primero El intervalo de superposición es [1,6];
/ ** 
 * @param {número [] []} intervalos 
 * @return {número [] []} 
 * / 
var merge = función (intervalos) { 
    if (! intervalos ||! intervals.length) return []; 
    intervalos.sort ((a, b) => a [0] - b [0]); 
    dejar i = 0; 
    let res = []; 
    while (i <intervals.length) { 
        dejar izquierda = intervalos [i] [0]; 
        dejar a la derecha = intervalos [i] [1]; 
        while (i <intervalos.longitud - 1 && intervalos [i + 1] [0] <= derecha) { 
            i ++; 
            derecha = Math.max (intervalos [i] [1], derecha); 
        } 
        res.push ([izquierda, derecha]); 
        i ++; 
    } 
    return res; 
};

  

Supongo que te gusta

Origin www.cnblogs.com/liu-xin1995/p/12717248.html
Recomendado
Clasificación