Menu
CoddyTech

Merge k Sorted Lists

Даны k списков целых чисел в качестве строк lists. Каждая строка отсортирована в неубывающем порядке, строки могут иметь разную длину, и ни одна строка не пуста.

Объедините их в один список, содержащий все значения из каждой строки, отсортированный в неубывающем порядке, и верните его. Значение, которое встречается несколько раз — в одной или нескольких строках, — должно встречаться в результате столько же раз.

Функция

mergeKLists(lists: integer-2d-array) → integer-array
listsinteger-2d-array
отсортированные списки, по одному в каждой строке, возможно, разной длины
Возвращаетinteger-array
все значения из каждой строки в одном отсортированном списке

Ограничения

  • 1 ≤ lists.length ≤ 104
  • 1 ≤ lists[i].length, и все строки вместе содержат не более 104 значений
  • -104 ≤ lists[i][j] ≤ 104
  • Каждая строка отсортирована в порядке неубывания.

Примеры

Ввод
lists = [[2, 6, 9], [1, 4, 10], [3, 5]]
Вывод
[1, 2, 3, 4, 5, 6, 9, 10]
Пояснение
Строки начинаются с 2, 1 и 3, поэтому сначала идёт 1. Затем в начале стоят 2, 4 и 3, поэтому следующим идёт 2 и так далее. В третьей строке числа заканчиваются после 5, остаются 6, 9 и 10.
challenge icon

Дополнительный вопрос

Найдите наименьший диапазон [a, b], содержащий значение из каждой строки. Можно ли решить эту задачу с помощью кучи первых элементов строк и наибольшего первого элемента за O(N log k)?

Сбросить код
def mergeKLists(lists):
    # Напишите код здесь

Тест #1

Тест #2

Тест #3

Аргумент

lists = [[2, 6, 9], [1, 4, 10], [3, 5]]

Ожидаемый вывод

[1, 2, 3, 4, 5, 6, 9, 10]