Menu
CoddyTech

Merge k Sorted Lists

Otrzymujesz k list liczb całkowitych jako wiersze lists. Każdy wiersz jest posortowany w kolejności niemalejącej, wiersze mogą mieć różne długości, a żaden wiersz nie jest pusty.

Scal je w jedną listę zawierającą wszystkie wartości ze wszystkich wierszy, posortowaną w kolejności niemalejącej, i zwróć ją. Wartość występująca kilka razy, w jednym wierszu lub w kilku, pojawia się w wyniku tyle samo razy.

Funkcja

mergeKLists(lists: integer-2d-array) → integer-array
listsinteger-2d-array
posortowane listy, po jednej w każdym wierszu, o możliwie różnej długości
Zwracainteger-array
każda wartość z każdego wiersza, na jednej posortowanej liście

Ograniczenia

  • 1 ≤ lists.length ≤ 104
  • 1 ≤ lists[i].length, a wszystkie wiersze łącznie zawierają co najwyżej 104 wartości
  • -104 ≤ lists[i][j] ≤ 104
  • Każdy wiersz jest posortowany w kolejności niemalejącej.

Przykłady

Wejście
lists = [[2, 6, 9], [1, 4, 10], [3, 5]]
Wyjście
[1, 2, 3, 4, 5, 6, 9, 10]
Wyjaśnienie
Najmniejsza wartość w całej tablicy to 1 — pierwsza wartość w drugim wierszu. Po niej wiersze zaczynają się od 2, 4 i 3, więc następna jest 2 i tak dalej. W trzecim wierszu wartości kończą się na 5, więc na końcu pozostają 6, 9 i 10.

lock icon+14 ukrytych testów przy wysłaniu

challenge icon

Pytanie dodatkowe

Znajdź najmniejszy zakres [a, b], który zawiera co najmniej jedną wartość z każdego wiersza. Czy ta sama sterta głów wierszy, wraz z największą dotąd głową, może znaleźć go w czasie O(N log k)?

Zresetuj kod
def mergeKLists(lists):
    # Wpisz kod tutaj
Przypadki testowe

Przypadek 1

Przypadek 2

Przypadek 3

Wejście

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

Oczekiwane

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