Вы можете сделать это следующим образом:
- Создать мин кучу размера = общее количество списков (LogN здесь) и вставьте 1-ый элемент во всех списках в кучу
Повторите следующий шаги № элементов в каждом списке * размер, который здесь n здесь.
a) Получите минимальный элемент из кучи (минимум всегда в корне) и сохраните его в списке результатов.
b) Замените корень кучи следующим элементом из списка, из которого извлекается элемент. Если в списке больше нет элементов, замените корень на бесконечность. После замены корня, heapify.
Таким образом, основным шагом является шаг 2, который запускает цикл n
в этом случае. Каждый раз, когда heapify берет журнал (размер), который равен loglogn
.
Следовательно, временная сложность: nloglogn
.
Это действительно просто. Как вы к нему подошли? – displayName
Я голосую, чтобы закрыть этот вопрос как не по теме, потому что автор пока не показал работу. – xenteros
Это звучит как домашнее задание. Возможно, это не так, но это похоже на одно. [«3. Вопросы, требующие помощи в выполнении домашних заданий, должны содержать ** резюме работы, которую вы сделали до сих пор, для решения проблемы **, и ** описание трудности, которую вы решаете. **"] (http://stackoverflow.com/help/on-topic). Текущее состояние вашего вопроса не отвечает этим требованиям. Пожалуйста, отредактируйте вопрос, чтобы улучшить его. Пожалуйста, также прочитайте это [Открытое письмо для учащихся с проблемами домашних заданий] (http://meta.programmers.stackexchange.com/q/6166). – Makyen