From 91af0b7a352787c8d06caeb881627fc8523acae8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=94=D0=BC=D0=B8=D1=82=D1=80=D0=B8=D0=B9?= Date: Thu, 14 Jul 2022 16:40:47 +0300 Subject: [PATCH] =?UTF-8?q?=D0=92=D1=80=D0=BE=D0=B4=D0=B5=20=D0=B1=D1=8B?= =?UTF-8?q?=20=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D0=B0=D1=8E=D1=89=D0=B0=D1=8F?= =?UTF-8?q?=20=D1=84=D1=83=D0=BD=D0=BA=D1=86=D0=B8=D1=8F=20=D0=B4=D0=BB?= =?UTF-8?q?=D1=8F=20=D0=B8=D0=BD=D1=82=D0=B5=D1=80=D0=B2=D0=B0=D0=BB=D0=BE?= =?UTF-8?q?=D0=B2.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Последовательно переворачиваю, тест-кейсы проходит --- task_3.py | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/task_3.py b/task_3.py index c0309f3..9953950 100644 --- a/task_3.py +++ b/task_3.py @@ -95,24 +95,28 @@ def find_intersection(interval_A, interval_B) -> list: def enlarge_elapsed_intervals(intervals): # ключ - начало, значние - конец. Если по ключу "начало" уже есть # значение, то сохраняем max(существующее, новое) - beginnings = {interval[0]: interval[1] for interval in intervals} - endings = {interval[1]: interval[0] for interval in intervals} + # чистка конечных интервалов. ключ в словаре - начало интервала. + # проходим по исходному списку и выбираем наибольшее конечное + # значение (самый поздний) из интервалов с одинаковыми началами + beginnings = {interval[0]: interval[1] for interval in intervals} for interval in intervals: begin = interval[0] end = interval[1] beginnings[begin] = max(beginnings[begin], end) - endings[end] = min(endings[end], begin) - print(f"{beginnings=}") + + endings = {beginnings[k]: k for k in beginnings} + for interval in intervals: + begin = interval[0] + end = interval[1] + if endings.get(end): + endings[end] = min(endings[end], begin) + print(f"{endings=}") - beginnings_list = list(beginnings.values()) - endings_lsit = list(endings.values()) - test = [ - [endings_lsit[i], beginnings_list[i]] for i in range(len(beginnings_list) - 1) - ] - return test + result = [[endings[k], k] for k in endings] + return result def appearance(intervals):