Dato un array, per ogni elemento ho bisogno di trovare l'elemento più piccolo a destra dell'elemento dato che è maggiore dell'elemento corrente.Trova il prossimo elemento più grande in un array
Matematicamente, Per ogni indice i
in ordine A
, ho bisogno di trovare indice j
tale che
A[j] > A[i]
j > i
A[j] - A[i] is minimum
Ho bisogno di trovare j
per ogni indice i
La soluzione di forza bruta sarebbe O(n^2)
e spero di fare meglio. Sto pensando che una soluzione O(n log n)
sia possibile usando il BST autobilanciato ma sembra piuttosto complesso. Inoltre ho bisogno di una soluzione O(n)
.
Esiste una soluzione O(n)
a questo problema? C'è una prova che il limite inferiore è O(n log n)
?
Hai bisogno di trovare per ogni indice? O solo un dato indice? –
Quindi l'input è 'A' e' i', l'output desiderato è 'j', s.t. le condizioni dichiarate valgono? – Nicolas
Ne ho bisogno per tutti gli indici .. Non solo uno. L'input è '' A'' un output è un array '' B'' contenente '' j'' per tutti gli indici '' i'' –