Data una sequenza di a[1], a[2], a[3] .... a[n]
, devo trovare per ogni a[i]
, un elemento a[j]
dove a[j]
è il primo elemento della sequenza a[i - 1], a[i - 2], a[i - 3]....
tale che a[j] < a[i]
.Trovare il predecessore di ogni elemento di una sequenza
In altre parole, devo trovare a[j]
dove a[j] < a[i]
e 1<=j<i
. Ma se ci sono più di questi elementi, devo scegliere quello che è più vicino a a[i]
.
Ad esempio, nella seguente sequenza:
2 6 5 8
devo uscita 2 sia per 6 e 5, e 5 per 8.
So che questo può essere fatto facilmente in O(n^2)
, ma esiste un modo più efficiente per farlo?
'dove a [j] è il primo elemento nella sequenza a [i - 1], a [i - 2], a [i - 3] ....' Vuoi dire che devi trovare il 'j' dove' a [j] Cratylus
Devo scegliere 'a [j]' dove 'a [j]
Ma qual è l'input qui? Un array e indice 'i' e vuoi trovare' j'? O hai bisogno di restituire un array con tutti 'j's? – Cratylus