Menu
CoddyTech

Find First and Last Position of Element in Sorted Array

Recibes una lista de enteros nums ordenada en orden no decreciente, por lo que un valor puede repetirse, y un entero target. Devuelve una lista de dos índices, empezando a contar desde 0: la primera y la última posición donde aparece target. Si target no está en la lista, devuelve [-1, -1]. Intenta lograr un tiempo de O(log n).

Función

searchRange(nums: integer-array, target: integer) → integer-array
numsinteger-array
la lista ordenada de números enteros, que puede contener valores repetidos
targetinteger
el valor que se debe buscar
Devuelveinteger-array
el primer y el último índice de target, o [-1, -1] si no está

Restricciones

  • 1 ≤ nums.length ≤ 104
  • -104 ≤ nums[i], target ≤ 104
  • nums está ordenado en orden no decreciente.

Ejemplos

Entrada
nums = [3, 5, 5, 5, 8, 9, 9, 12]target = 5
Salida
[1, 3]
Explicación
Las tres copias de 5 están en los índices 1, 2 y 3, así que la secuencia empieza en 1 y termina en 3. El índice 0 contiene 3 y el índice 4 contiene 8, así que la secuencia no puede extenderse más.
challenge icon

Para ir más allá

Si la misma lista recibe miles de consultas para distintos objetivos, ¿puede una pasada por adelantado hacer que cada consulta sea más rápida que O(log n)?

Restablecer código
def searchRange(nums, target):
    # Escribe el código aquí

Prueba #1

Prueba #2

Argumentos

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

Salida Esperada

[1, 3]