frank.daniele ha scritto:
Ho provato a risolverlo cosi, i valori escono, ma non sono sicuro che a livello di ragionamento sia tutto corretto.
No .... troppa roba, è fumosissimo!
Ripeto che per trovare tutti i max dei seguenti bastano 2 for annidati. Se vuoi conteggiare prima quanti sono, si può ripetere quel for annidato (sì è una ripetizione ma "leggera" e accettabile) per calcolare quanti sono. Oppure dimensionare v2 grande quanto v1 e poi riempire e man mano contando anche e poi alla fine creare un ulteriore array finale della "giusta" dimensione. Oppure, altra strategia, riallocare l'array di 1 più grande ad ogni nuovo inserimento.
P.S. per capire quanto ho detto, invece di pensare a creare l'array fai un passo prima solo per stampare direttamente i dati.
EDIT: come altro piccolo suggerimento, se vuoi semplificare un po', puoi fare un metodo del tipo:
public static boolean maggioreSeguenti(int[] array, int indice)
che restituisce true se il valore array[indice] è maggiore di tutti quelli seguenti nell'array (da indice+1
compreso in poi). A quel punto altrove ti basta 1 for ed usare all'interno questo metodo.