Python: объединение перекрывающихся отсортированных потоков с удалением дубликатовPython

Программы на Python
Anonymous
Python: объединение перекрывающихся отсортированных потоков с удалением дубликатов

Сообщение Anonymous »

Напишите функцию Python merge_sorted_streams_with_duplications, которая принимает список отсортированных генераторов (или итераций) и возвращает один отсортированный генератор, который возвращает все уникальные элементы из входных потоков. Функция должна:
  • обрабатывать произвольное количество входных потоков
  • удалять дубликаты во всех потоках
  • Использовать не более O(1) дополнительной памяти (помимо самих входных потоков)
  • Иметь временную сложность O(N log K), где N — общее количество элементов, а K — количество входных потоков.
Пример:

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

stream1 = (x for x in [1, 2, 2, 3])
stream2 = (x for x in [2, 3, 4, 5])
merged_stream = merge_sorted_streams_with_duplicates([stream1, stream2])
print(list(merged_stream)) # [1, 2, 3, 4, 5]
Я тоже получил ответ на проблему. Но если у кого-то есть другое эффективное решение, добавьте его в ответы.


Подробнее здесь: https://stackoverflow.com/questions/788 ... te-removal

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