# 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:
- lambda es una palabra clave que define una expresión lambda.
- argumentos es una lista de parámetros, que pueden ser cero o más parámetros, separados por comas.
- 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:
-
匿名性:lambda表达式是匿名的,即没有显式指定函数名称,因此通常用于一些简单的、无需重复使用的函数场景。
-
简洁性:lambda表达式使用简洁的语法,可以在一行代码中定义一个函数。
-
一次性使用:由于lambda表达式没有函数名称,它通常用于需要在代码中临时定义和使用函数的场景,不会在其他地方重复调用。
-
返回值:lambda表达式的返回值由表达式部分决定,可以是单个值、表达式结果、函数调用结果等。
-
可调用性:lambda表达式可以像普通函数一样被调用,通过提供参数来执行表达式,并返回结果。
-
应用范围: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 + y
define 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.