Retour aux défis
Difficile 0 résolus 0 % de réussite

Median of Two Sorted Arrays

Find the median of two sorted lists combined.

Ce que vous allez apprendre

  • Partitionner deux tableaux triés par dichotomie
  • Trouver la médiane en O(log n)
  • Gérer les longueurs totales paires et impaires

Problème

Both lists are sorted in ascending order. Find the median of all their numbers together; for an even count it is the average of the two middle values. An O(log(m + n)) partition search is possible, but any correct method within the limits is accepted.

Implement median_of_two(first, second).

Input

first: A sorted list. second: A sorted list.

Output

Return the median.

Contraintes

0 ≤ lengths ≤ 100,000; the combined length is at least 1

Exemples

Exemple 1
Entrée :
first = [1, 3]
second = [2]

Sortie attendue :
expected = 2.0
Entrée :
std::vector<long long> first = {1, 3};
std::vector<long long> second = {2};

Sortie attendue :
double expected = 2.0;
Entrée :
long[] first = new long[] {1, 3};
long[] second = new long[] {2};

Sortie attendue :
double expected = 2.0;

Explication

Combined: [1, 2, 3]; the middle value is 2.

Exemple 2
Entrée :
first = [1, 2]
second = [3, 4]

Sortie attendue :
expected = 2.5
Entrée :
std::vector<long long> first = {1, 2};
std::vector<long long> second = {3, 4};

Sortie attendue :
double expected = 2.5;
Entrée :
long[] first = new long[] {1, 2};
long[] second = new long[] {3, 4};

Sortie attendue :
double expected = 2.5;

Explication

Combined: [1, 2, 3, 4]; (2 + 3) / 2 = 2.5.

Comment l'aborder

Essayez d'abord seul, puis ouvrez les indices un par un.

Indice 1

L’ordre combiné compte, mais tu n’as pas besoin de tout fusionner si tu peux trouver directement la coupure centrale.

Indice 2

Cherche une partition où les moitiés gauche contiennent exactement les éléments du bas milieu et où chaque valeur à gauche est ≤ à chaque valeur à droite.

Indice 3

Gère soigneusement les tableaux vides et les longueurs totales impaires ou paires, car la médiane peut venir d’une seule valeur centrale ou de deux.

Complexité attendue

temps O(log(min(m, n))), espace supplémentaire O(1)

Références

Ce défi a été adapté pour CodeUtility. Suivez l'énoncé et les contraintes ci-dessus.

Apprenez des autres

Solutions de la communauté

Aucune solution publiée pour l'instant. Résolvez ce défi pour partager la première.