# 56. Объединить интервалы.
Дан массив интервалов, где intervals[i] = [starti, endi], объединить все перекрывающиеся интервалы и вернуть массив непересекающихся интервалов, покрывающий все интервалы во входных данных.
Пример 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].
Пример 2:
Input: intervals = [[1,4],[4,5]]
Output: [[1,5]]
Explanation: Intervals [1,4] and [4,5] are considered overlapping.
Ограничения:
- 1 <= интервалы.длина <= 104
- интервалы[i].length == 2
- 0 <= начало <= конец <= 104
1. Слить после сортировки по первому номеру
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 Интерпретация кодаintervals.sort(key=lambda x: x[0])
Этот код использует метод sort() в Python для сортировки интервалов списка по первому элементу каждого подсписка.
Конкретное объяснение следующее:
- intervals — это список, содержащий несколько подсписков, каждый подсписок представляет интервал, а первый элемент каждого подсписка представляет начальную позицию интервала.
- Метод sort() используется для сортировки списка, где ключевым параметром является функция или лямбда-выражение, используемое для указания основы сортировки.
- В этом коде в качестве ключевого параметра используется лямбда-выражение lambda x:x[0], что означает сортировку каждого подсписка x по первому элементу.
- После выполнения этого кода список интервалов будет отсортирован по первому элементу подсписка от меньшего к большему.
Например, предположим, что список интервалов выглядит следующим образом:
intervals = [[3, 5], [1, 2], [4, 6], [2, 4]]
После сортировки список интервалов становится таким:
[[1, 2], [2, 4], [3, 5], [4, 6]]
Отсортированный список упорядочен по первому элементу подсписка от меньшего к большему. Это упорядочение можно использовать для сортировки интервалов в соответствии с их начальными позициями для дальнейшей обработки или анализа.
1.2 Подробное описание лямбда-выражений
Лямбда-выражения — это сокращение для анонимных функций, которые позволяют нам создавать небольшие одноразовые функции в нашем коде без явного определения имени функции.
Основной синтаксис лямбда-выражений следующий:
lambda arguments: expression
в:
- lambda — ключевое слово, определяющее лямбда-выражение.
- arguments — это список параметров, который может состоять из нуля или более параметров, разделенных запятыми.
- выражение — это выражение, описывающее возвращаемое значение лямбда-функции.
Характеристики и использование лямбда-выражений следующие:
-
匿名性:lambda表达式是匿名的,即没有显式指定函数名称,因此通常用于一些简单的、无需重复使用的函数场景。
-
简洁性:lambda表达式使用简洁的语法,可以在一行代码中定义一个函数。
-
一次性使用:由于lambda表达式没有函数名称,它通常用于需要在代码中临时定义和使用函数的场景,不会在其他地方重复调用。
-
返回值:lambda表达式的返回值由表达式部分决定,可以是单个值、表达式结果、函数调用结果等。
-
可调用性:lambda表达式可以像普通函数一样被调用,通过提供参数来执行表达式,并返回结果。
-
应用范围:lambda表达式通常用于函数式编程、排序、过滤、映射等操作,以及作为高阶函数的参数。
Вот пример использования лямбда-выражений:
add = lambda x, y: x + y
result = add(2, 3)
print(result) # Output: 5
В этом примере лямбда-выражение lambda x, y: x + y
определяет простую функцию сложения, которая добавляет два аргумента и возвращает результат. Затем мы add(2, 3)
вызываем лямбда-функцию, получаем результат 5 и распечатываем его.
Лямбда-выражения очень полезны, когда требуются простые временные определения функций, которые могут уменьшить сложность и избыточность кода, а также повысить удобочитаемость и эффективность записи.