Menu
CoddyTech

Binary Search

Se te proporciona una lista de números enteros nums ordenados de menor a mayor, sin valores repetidos, y un número entero target. Devuelve el índice de target en nums, empezando a contar desde 0, o -1 si no está en la lista. Intenta lograr un tiempo de ejecución de O(log n), lo que significa que no puedes permitirte revisar todos los elementos.

Función

search(nums: integer-array, target: integer) → integer
numsinteger-array
la lista ordenada de números enteros distintos
targetinteger
el valor que se debe buscar
Devuelveinteger
el índice de target en nums, o -1 si no se encuentra

Restricciones

  • 1 ≤ nums.length ≤ 104
  • -104 ≤ nums[i], target ≤ 104
  • nums está ordenado en orden estrictamente creciente, por lo que cada valor aparece una sola vez.

Ejemplos

Entrada
nums = [-7, -2, 0, 4, 9, 15, 23]target = 9
Salida
4
Explicación
nums[4] es 9. La búsqueda mira el índice 3 (valor 4, demasiado pequeño), después el índice 5 (valor 15, demasiado grande) y, por último, el índice 4, donde encuentra 9.

lock icon+15 pruebas ocultas al enviar

challenge icon

Para ir más allá

Si nums pudiera contener valores repetidos, ¿cómo devolverías el primer índice de target, manteniendo O(log n)?

Restablecer código
def search(nums, target):
    # Escribe el código aquí
Casos de prueba

Caso 1

Caso 2

Entrada

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

Esperado

4