Объединение интервалов по условиюPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Объединение интервалов по условию

Сообщение Anonymous »

Это классический подход к объединению интервалов:

Код: Выделить всё

def merge(intervals: List[List[int]]) -> List[List[int]]:
result = []
intervals.sort()
prev_interval = intervals[0]

for curr_interval in intervals[1:]:
if prev_interval[1] >= curr_interval[0]:  # Check if they overlap
prev_interval = [prev_interval[0], max(curr_interval[1], prev_interval[1])]
else:
result.append(prev_interval)
prev_interval = curr_interval

result.append(prev_interval)
return result
Я хотел бы изменить это решение, чтобы объединить интервалы, если «конец» любого интервала + 1 равен «началу» любого интервала в списке.
  • Пример 1: интервалы = [[1,2], [3,4]] ==> [[1,4]]
  • Пример 2: интервалы = [[1,5], [6,9]] ==> [[1,9]]
  • Пример 3: интервалы = [ [1,5], [14, 17], [6,9], [10,13]] ==> [[1,17]]
  • Пример 4: интервалы = [[1,5], [14, 17], [6,9], [10,13], [4,7], [8,12]] ==> [[1,17], [4 ,12]]
Я не могу опираться на свое текущее решение, поскольку не уверен, что интервалы, которые могут перекрываться, будут соседними в отсортированная форма списка заданных интервалов. Неэффективным решением было бы перебирать каждую комбинацию пар в списке и, если они перекрываются, удалять их из списка и помещать их объединение в результат.
Можете ли вы помочь мне создать это? функционировать наиболее оптимальным образом?

Подробнее здесь: https://stackoverflow.com/questions/790 ... -condition
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Объединение интервалов по условию
    Anonymous » » в форуме Python
    0 Ответы
    12 Просмотры
    Последнее сообщение Anonymous
  • Объединение элементов в списке по заданному условию
    Anonymous » » в форуме Python
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous
  • Объединение перекрывающихся интервалов
    Anonymous » » в форуме Python
    0 Ответы
    2 Просмотры
    Последнее сообщение Anonymous
  • Объединение заказов и объединение повторяющихся позиций в Woocommerce
    Anonymous » » в форуме Php
    0 Ответы
    82 Просмотры
    Последнее сообщение Anonymous
  • Динамическое объединение нескольких фреймов данных PySpark: объединение статических столбцов с ежегодными динамическими
    Anonymous » » в форуме Python
    0 Ответы
    49 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»