Menu
CoddyTech

Find First and Last Position of Element in Sorted Array

Você recebe uma lista de números inteiros nums ordenada em ordem não decrescente, portanto um valor pode se repetir, e um número inteiro target. Retorne uma lista com dois índices, começando em 0: a primeira e a última posição em que target aparece. Se target não estiver na lista, retorne [-1, -1]. Procure alcançar tempo O(log n).

Função

searchRange(nums: integer-array, target: integer) → integer-array
numsinteger-array
a lista ordenada de números inteiros, que pode conter valores repetidos
targetinteger
o valor a procurar
Retornainteger-array
o primeiro e o último índice de target, ou [-1, -1] se ele não estiver presente

Restrições

  • 1 ≤ nums.length ≤ 104
  • -104 ≤ nums[i], target ≤ 104
  • nums está ordenado em ordem não decrescente.

Exemplos

Entrada
nums = [3, 5, 5, 5, 8, 9, 9, 12]target = 5
Saída
[1, 3]
Explicação
As três cópias de 5 estão nos índices 1, 2 e 3, então a sequência começa em 1 e termina em 3. O índice 0 contém 3 e o índice 4 contém 8, então a sequência não pode se estender mais.
challenge icon

Para ir além

Se a mesma lista receber milhares de consultas para diferentes valores-alvo, uma única passagem prévia por ela pode tornar cada consulta mais rápida que O(log n)?

Redefinir código
def searchRange(nums, target):
    # Escreva o código aqui

Teste #1

Teste #2

Argumentos

nums = [3, 5, 5, 5, 8, 9, 9, 12]
target = 5

Saída Esperada

[1, 3]