Menu
CoddyTech

Find First and Last Position of Element in Sorted Array

Ricevi un elenco di numeri interi nums ordinati in ordine non decrescente, quindi un valore può ripetersi, e un numero intero target. Restituisci un elenco di due indici, contando da 0: la prima e l’ultima posizione in cui compare target. Se target non è nell’elenco, restituisci [-1, -1]. Punta a un tempo O(log n).

Funzione

searchRange(nums: integer-array, target: integer) → integer-array
numsinteger-array
l'elenco ordinato di numeri interi, che può contenere valori ripetuti
targetinteger
il valore da cercare
Restituisceinteger-array
il primo e l’ultimo indice di target, oppure [-1, -1] se è assente

Vincoli

  • 1 ≤ nums.length ≤ 104
  • -104 ≤ nums[i], target ≤ 104
  • nums è ordinato in ordine non decrescente.

Esempi

Input
nums = [3, 5, 5, 5, 8, 9, 9, 12]target = 5
Output
[1, 3]
Spiegazione
Le tre copie di 5 si trovano agli indici 1, 2 e 3, quindi la serie inizia a 1 e termina a 3. L'indice 0 contiene 3 e l'indice 4 contiene 8, quindi la serie non può estendersi oltre.
challenge icon

Per approfondire

Se la stessa lista riceve migliaia di query per obiettivi diversi, una sola scansione preventiva può rendere ogni query più veloce di O(log n)?

Ripristina il codice
def searchRange(nums, target):
    # Scrivi il codice qui

Test #1

Test #2

Argomenti

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

Output atteso

[1, 3]