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]
Пояснение
Наименьшее значение в целом — 1, первое значение во второй строке. После него строки начинаются с 2, 4 и 3, поэтому следующим идет 2, и так далее. В третьей строке значения заканчиваются на 5, после чего в конце остаются 6, 9 и 10.

lock icon+14 скрытых тестов при отправке

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]