Menu
CoddyTech

Binary Search

Ti viene fornito un elenco di numeri interi nums ordinati in ordine crescente, senza valori ripetuti, e un numero intero target. Restituisci l'indice di target in nums, contando da 0, oppure -1 se non è nell'elenco. Punta a un tempo di esecuzione di O(log n), il che significa che non puoi permetterti di esaminare ogni elemento.

Funzione

search(nums: integer-array, target: integer) → integer
numsinteger-array
l'elenco ordinato di interi distinti
targetinteger
il valore da cercare
Restituisceinteger
l'indice di target in nums, oppure -1 se non è presente

Vincoli

  • 1 ≤ nums.length ≤ 104
  • -104 ≤ nums[i], target ≤ 104
  • nums è ordinato in ordine strettamente crescente, quindi ogni valore compare una sola volta.

Esempi

Input
nums = [-7, -2, 0, 4, 9, 15, 23]target = 9
Output
4
Spiegazione
nums[4] è 9. La ricerca controlla l'indice 3 (valore 4, troppo piccolo), poi l'indice 5 (valore 15, troppo grande), quindi l'indice 4, dove trova 9.

lock icon+15 test nascosti all’invio

challenge icon

Per approfondire

Se nums potesse contenere valori ripetuti, come restituiresti il primo indice di target, sempre in O(log n)?

Ripristina il codice
def search(nums, target):
    # Scrivi il codice qui
Casi di test

Caso 1

Caso 2

Input

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

Atteso

4