Menu
CoddyTech

Binary Search

Vous recevez une liste d’entiers nums triée par ordre croissant, sans aucune valeur répétée, ainsi qu’un entier target. Renvoyez l’indice de target dans nums, en commençant à compter à partir de 0, ou -1 si cette valeur ne figure pas dans la liste. Visez un temps d’exécution de O(log n), ce qui signifie que vous ne pouvez pas vous permettre d’examiner chaque élément.

Fonction

search(nums: integer-array, target: integer) → integer
numsinteger-array
la liste triée d’entiers distincts
targetinteger
la valeur à rechercher
Renvoieinteger
l’index de target dans nums, ou -1 s’il est absent

Contraintes

  • 1 ≤ nums.length ≤ 104
  • -104 ≤ nums[i], target ≤ 104
  • nums est trié par ordre strictement croissant, donc chaque valeur apparaît une seule fois.

Exemples

Entrée
nums = [-7, -2, 0, 4, 9, 15, 23]target = 9
Sortie
4
Explication
nums[4] vaut 9. La recherche examine l’indice 3 (valeur 4, trop petite), puis l’indice 5 (valeur 15, trop grande), puis l’indice 4, où elle trouve 9.

lock icon+15 tests cachés à la soumission

challenge icon

Pour aller plus loin

Si nums pouvait contenir des valeurs répétées, comment renverrais-tu le premier indice de target, toujours en O(log n) ?

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

Cas 1

Cas 2

Entrée

nums = [-7, -2, 0, 4, 9, 15, 23]
target = 9

Attendu

4