Menu
CoddyTech

Binary Search

Você recebe uma lista de inteiros nums ordenada em ordem crescente, sem valores repetidos, e um inteiro target. Retorne o índice de target em nums, começando a contar do 0, ou -1 se ele não estiver na lista. Busque um tempo de O(log n), o que significa que você não pode se dar ao luxo de verificar cada elemento.

Função

search(nums: integer-array, target: integer) → integer
numsinteger-array
a lista ordenada de números inteiros distintos
targetinteger
o valor a ser procurado
Retornainteger
o índice de target em nums, ou -1 se ele não estiver presente

Restrições

  • 1 ≤ nums.length ≤ 104
  • -104 ≤ nums[i], target ≤ 104
  • nums está ordenado em ordem estritamente crescente, então cada valor aparece uma vez.

Exemplos

Entrada
nums = [-7, -2, 0, 4, 9, 15, 23]target = 9
Saída
4
Explicação
nums[4] é 9. A busca verifica o índice 3 (valor 4, pequeno demais), depois o índice 5 (valor 15, grande demais) e, em seguida, o índice 4, onde encontra 9.

lock icon+15 testes ocultos ao enviar

challenge icon

Para ir além

Se nums pudesse ter valores repetidos, como você retornaria o primeiro índice de target, ainda em O(log n)?

Redefinir código
def search(nums, target):
    # Escreva o código aqui
Casos de teste

Caso 1

Caso 2

Entrada

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

Esperado

4