Menu
CoddyTech

Merge k Sorted Lists

DifficileTasListe chaînéepython iconjava iconcpp iconc iconjs icon+10

Tu reçois k listes d’entiers correspondant aux lignes de lists. Chaque ligne est triée par ordre non décroissant, les lignes peuvent avoir des longueurs différentes et aucune ligne n’est vide.

Fusionne-les en une seule liste contenant toutes les valeurs de toutes les lignes, triées par ordre non décroissant, puis retourne-la. Une valeur qui apparaît plusieurs fois, dans une seule ligne ou dans plusieurs, apparaît autant de fois dans le résultat.

Fonction

mergeKLists(lists: integer-2d-array) → integer-array
listsinteger-2d-array
les listes triées, une par ligne, de longueurs éventuellement différentes
Renvoieinteger-array
toutes les valeurs de toutes les lignes, dans une seule liste triée

Contraintes

  • 1 ≤ lists.length ≤ 104
  • 1 ≤ lists[i].length, et toutes les lignes contiennent au total au plus 104 valeurs
  • -104 ≤ lists[i][j] ≤ 104
  • Chaque ligne est triée par ordre non décroissant.

Exemples

Entrée
lists = [[2, 6, 9], [1, 4, 10], [3, 5]]
Sortie
[1, 2, 3, 4, 5, 6, 9, 10]
Explication
La plus petite valeur au total est 1, la première valeur de la deuxième ligne. Après elle, les lignes commencent par 2, 4 et 3 ; 2 vient donc ensuite, et ainsi de suite. La troisième ligne s’arrête après 5, ce qui laisse 6, 9 et 10 à la fin.

lock icon+14 tests cachés à la soumission

challenge icon

Pour aller plus loin

Trouvez le plus petit intervalle [a, b] qui contient au moins une valeur de chaque ligne. Le même tas des premiers éléments de chaque ligne, accompagné du plus grand premier élément rencontré jusqu’à présent, peut-il le trouver en O(N log k) ?

Réinitialiser le code
def mergeKLists(lists):
    # Écrivez le code ici
Cas de test

Cas 1

Cas 2

Cas 3

Entrée

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

Attendu

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