Алгоритм: Интервал слияния 56. Интервалы слияния

# 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

в:

  1. lambda — ключевое слово, определяющее лямбда-выражение.
  2. arguments — это список параметров, который может состоять из нуля или более параметров, разделенных запятыми.
  3. выражение — это выражение, описывающее возвращаемое значение лямбда-функции.

Характеристики и использование лямбда-выражений следующие:

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

Вот пример использования лямбда-выражений:

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

В этом примере лямбда-выражение lambda x, y: x + yопределяет простую функцию сложения, которая добавляет два аргумента и возвращает результат. Затем мы add(2, 3)вызываем лямбда-функцию, получаем результат 5 и распечатываем его.
Лямбда-выражения очень полезны, когда требуются простые временные определения функций, которые могут уменьшить сложность и избыточность кода, а также повысить удобочитаемость и эффективность записи.

рекомендация

отblog.csdn.net/zgpeace/article/details/131777016
рекомендация