Algoritmo: Intervalo de fusión 56. Intervalos de fusión

# 56. Combinar intervalos
Dada una matriz de intervalos donde intervalos[i] = [starti, endi], combine todos los intervalos superpuestos y devuelva una matriz de los intervalos no superpuestos que cubren todos los intervalos en la entrada.

Ejemplo 1:

Input: intervals = [[1,3],[2,6],[8,10],[15,18]]
Output: [[1,6],[8,10],[15,18]]
Explanation: Since intervals [1,3] and [2,6] overlap, merge them into [1,6].

Ejemplo 2:

Input: intervals = [[1,4],[4,5]]
Output: [[1,5]]
Explanation: Intervals [1,4] and [4,5] are considered overlapping.

Restricciones:

  • 1 <= intervalos.longitud <= 104
  • intervalos[i].longitud == 2
  • 0 <= inicio <= fin <= 104

1. Combinar después de ordenar según el primer número

class Solution:
    def merge(self, intervals: List[List[int]]) -> List[List[int]]:
        intervals.sort(key=lambda x: x[0])
        res = []
        for item in intervals:
            if not res or res[-1][1] < item[0]:
                res.append(item)
            else:
                res[-1][1] = max(res[-1][1], item[1])
        
        return res

1.1 Interpretando el códigointervals.sort(key=lambda x: x[0])

Este código usa el método sort() en Python para ordenar los intervalos de la lista por el primer elemento de cada sublista.
La explicación específica es la siguiente:

  • intervalos es una lista que contiene varias sublistas, cada sublista representa un intervalo y el primer elemento de cada sublista representa la posición inicial del intervalo.
  • El método sort() se usa para ordenar la lista, donde el parámetro clave es una función o expresión lambda que se usa para especificar la base para ordenar.
  • En este código, la expresión lambda lambda x: x[0] se usa como parámetro clave, lo que significa ordenar cada sublista x según el primer elemento.
  • Después de ejecutar este código, la lista de intervalos se ordenará según el primer elemento de la sublista de menor a mayor.
    Por ejemplo, supongamos que la lista de intervalos es la siguiente:
intervals = [[3, 5], [1, 2], [4, 6], [2, 4]]

Después de ordenar, la lista de intervalos se convierte en:

[[1, 2], [2, 4], [3, 5], [4, 6]]

La lista ordenada se organiza de acuerdo con el primer elemento de la sublista de menor a mayor. Esta ordenación se puede utilizar para clasificar los intervalos según sus posiciones iniciales para su posterior procesamiento o análisis.

1.2 Explicar las expresiones lambda en detalle

Las expresiones lambda son una forma abreviada de funciones anónimas que nos permiten crear funciones pequeñas y únicas en nuestro código sin definir explícitamente el nombre de la función.
La sintaxis básica de las expresiones lambda es la siguiente:

lambda arguments: expression

en:

  1. lambda es una palabra clave que define una expresión lambda.
  2. argumentos es una lista de parámetros, que pueden ser cero o más parámetros, separados por comas.
  3. expresión es una expresión que describe el valor de retorno de la función lambda.

Las características y el uso de las expresiones lambda son las siguientes:

  1.  匿名性:lambda表达式是匿名的,即没有显式指定函数名称,因此通常用于一些简单的、无需重复使用的函数场景。
    
  2.  简洁性:lambda表达式使用简洁的语法,可以在一行代码中定义一个函数。
    
  3.  一次性使用:由于lambda表达式没有函数名称,它通常用于需要在代码中临时定义和使用函数的场景,不会在其他地方重复调用。
    
  4.  返回值:lambda表达式的返回值由表达式部分决定,可以是单个值、表达式结果、函数调用结果等。
    
  5.  可调用性:lambda表达式可以像普通函数一样被调用,通过提供参数来执行表达式,并返回结果。
    
  6.  应用范围:lambda表达式通常用于函数式编程、排序、过滤、映射等操作,以及作为高阶函数的参数。
    

Aquí hay un ejemplo usando expresiones lambda:

add = lambda x, y: x + y 
result = add(2, 3) 
print(result) # Output: 5

En este ejemplo, la expresión lambda lambda x, y: x + ydefine una función de suma simple que suma dos argumentos y devuelve el resultado. Luego, add(2, 3)llamamos a la función lambda, obtenemos el resultado 5 y lo imprimimos.
Las expresiones lambda son muy útiles cuando se requieren definiciones de funciones simples y temporales, lo que puede reducir la complejidad y la redundancia del código, y mejorar la legibilidad y la eficiencia de escritura.

Supongo que te gusta

Origin blog.csdn.net/zgpeace/article/details/131777016
Recomendado
Clasificación