Data una sequenza di numeri interi positivi e un numero intero M, restituisce il primo numero nella sequenza che è maggiore di M (o -1 se non esiste) .Trova il primo numero maggiore di un dato in una sequenza non ordinata
Esempio: sequenza = [2, 50, 8, 9, 1], M = 3 -> ritorno = 50
O (log n) per ogni query richiesta (dopo preelaborazione).
ho pensato di BST, ma dato una sequenza ascendente che avrei avuto solo un lungo percorso, che non mi avrebbe dato O (log n) tempo ...
EDIT: Macchine struttura dovrebbe essere anche facile da modificare, cioè dovrebbe essere possibile sostituire l'elemento trovato con quello dato e ripetere la ricerca di un'altra M (tutto - a parte la pre-elaborazione - O (logn)). E ovviamente sarebbe bello, se potessi cambiare 'prima maggiore' a 'prima più piccola' e non dovessi cambiare troppo nell'algoritmo. E se aiuta, possiamo assumere che tutti i numeri siano positivi e non ci siano ripetizioni.
è possibile utilizzare la ricerca binaria, se i numeri sono ordinati. Aggiornamento –
: dall'esempio è chiaro prima! = Il più basso. Primo = prima nell'input. –
Quali dati vengono dati per la pre-elaborazione? Solo la sequenza? –