LeetcodeMedium- 【56. Intervalo de fusión】

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.

Fuente:
enlace de LeetCode : https://leetcode-cn.com/problems/merge-intervals Los
derechos de autor pertenecen a la red de deducción. Comuníquese con la autorización oficial para la reimpresión comercial e indique la fuente de la reimpresión no comercial.

Idea: ordene por el punto de inicio del intervalo de búsqueda para obtener una lista de intervalos ordenados y luego combine. Después de ordenar, solo hay tres casos de fusión: inclusión, intersección y separación. Es suficiente tratar las tres situaciones por separado: cada vez que se procesen dos secciones adyacentes, la nueva sección obtenida principalmente también se debe incluir en la siguiente comparación.

Nota: El tipo de lista de Python se ordena por timsort de forma predeterminada. El principio de realización interna de la función de clasificación de Python

class Solution:
    def merge(self, intervals: List[List[int]]) -> List[List[int]]:
        if intervals == []:
            return []
        # 区间排序
        intervals.sort()
        # print(intervals)
        ans = [intervals[0]] # 加入第一个区间
        i = 1
        while i < len(intervals):
            # 每次比较最后一个加入的区间和当前遍历区间的关系:
            if ans[-1][-1] >= intervals[i][-1]:
                pass
            elif ans[-1][-1] >= intervals[i][0]:
                t = ans.pop()
                ans.append([t[0], intervals[i][-1]])
            else:
                ans.append(intervals[i])
            i += 1
        return ans

 

 
Publicado 314 artículos originales · 22 alabanzas · Más de 20,000 visitas

Supongo que te gusta

Origin blog.csdn.net/qq_39451578/article/details/105263452
Recomendado
Clasificación