Ho una domanda algoritmo:algoritmo per trovare il più grande calo in un array
Dato un array (assumendo tutti gli elementi sono intergers) di dimensione N, troviamo il più grande calo (non necessariamente continuo): max {array [i] -array [j]} con un vincolo: i> j.
La soluzione semplice è che due cicli passano attraverso tutti i possibili valori di i e j, ma la complessità temporale è O (n * n).
E una soluzione migliore penso sia quella di mappare prima gli indici dell'array, ordinare l'array e passare attraverso l'array per trovare la goccia più grande. Questa complessità è O (nlogn).
Esiste una soluzione con complessità temporale lineare? E come?
PS: Una volta ho pensato a una soluzione lineare: creare due array aggiuntivi, uno è registrare il valore massimo dell'array dato dall'inizio alla fine e l'altro al valore minimo dalla fine all'inizio. Quindi, passare attraverso due array di un passaggio. Tuttavia, qualcuno ha pensato che non correttamente e occupando troppo spazio. Quindi voglio sapere una soluzione migliore. - lijuanliu
Ah, una domanda da corso compiti a casa. Non dovresti risolvere meglio te stesso? – arkascha
@arkascha: Una volta ho pensato a una soluzione lineare: creare due array aggiuntivi, uno è registrare il valore massimo dell'array dato dall'inizio alla fine e l'altro al valore minimo dalla fine all'inizio. Poi, passare attraverso due array di un passaggio. Tuttavia, qualcuno ha pensato che non correttamente e occupando troppo spazio. Quindi voglio sapere una soluzione migliore. – lijuanliu
Non hai capito il mio punto ;-) – arkascha