Menu
CoddyTech

Find the Duplicate Number

Vous recevez un tableau nums de n+1 entiers, chacun compris entre 1 et n. Une seule valeur apparaît plusieurs fois, éventuellement un grand nombre de fois, et vous renvoyez cette valeur.

Résolvez le problème sans modifier nums et en utilisant uniquement une quantité constante de mémoire supplémentaire.

Fonction

findDuplicate(nums: integer-array) → integer
numsinteger-array
n+1 entiers, chacun compris entre 1 et n
Renvoieinteger
la valeur qui apparaît plus d’une fois

Contraintes

  • 1 ≤ n ≤ 104
  • nums.length == n+1
  • 1 ≤ nums[i] ≤ n
  • Une seule valeur apparaît deux fois ou plus ; toutes les autres valeurs apparaissent au plus une fois.

Exemples

Entrée
nums = [2, 5, 1, 3, 5, 4]
Sortie
5
Explication
Ici, n vaut 5, et 5 se trouve aux positions 1 et 4, donc la réponse est 5. Toutes les autres valeurs de 1 à 5 apparaissent une fois.

lock icon+17 tests cachés à la soumission

challenge icon

Pour aller plus loin

La recherche binaire sur les valeurs respecte les deux règles en un temps de O(n log n). Peux-tu les respecter en un temps de O(n) ?

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

Cas 1

Cas 2

Entrée

nums = [2, 5, 1, 3, 5, 4]

Attendu

5