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.
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

Test #1

Test #2

Argument

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

Résultat attendu

5