Cercare numeri ripetuti in un array

di il
2 risposte

Cercare numeri ripetuti in un array

Sono i crisi!!

Ho un array di int che ho ordinato col metodo sort(), ora voglio vedere in questo array quali valori numerici sono ripetuti più di una volta. come posso fare?

Grazie

2 Risposte

  • Re: Cercare numeri ripetuti in un array

    Se sono ordinati diventa abbastanza semplice perché basta confrontare l'elemento corrente con il successivo ...
  • Re: Cercare numeri ripetuti in un array

    È quello che ho provato a fare. Credo che il codice (fatto malissimo e mi scuso) comunque parli meglio di me:

    (la variabile quadrato è una matrice bidimensionale quadrata di interi, con numero righe e numero colonne uguali)
    
    public void controlloNumeriRipetuti()
    	{
    		int [] arrayAppoggio=GeneralUtil.creaArray((int)Math.pow(quadrato.length, 2));
    		Vector<Integer> ripetuti=new Vector<Integer>();
    		int cella=0;
    		int minimo=0;
    		int primoCiclo=0;
    		//porto tutti i valori della matrice in un array
    		for(int i=0;i<quadrato.length;i++)
    			for(int k=0;k<quadrato.length;k++)
    			{
    				arrayAppoggio[cella]=quadrato[i][k];
    				cella++;
    			}
    		
    		Arrays.sort(arrayAppoggio);
    		
    		/*for(int i=0;i<arrayAppoggio.length;i++)
    			System.out.printf("%d ", arrayAppoggio[i]);*/
    		
    		for(int i=0;i<quadrato.length;i++)
    			for(int k=0;k<quadrato.length;k++)
    			{
    				if(arrayAppoggio[i]>minimo)
    				{
    					if(arrayAppoggio[k]==arrayAppoggio[i])
    					{
    					primoCiclo++;
    					if(primoCiclo>1)
    					{
    					ripetuti.add(arrayAppoggio[k]);
    					primoCiclo=0;
    					minimo=arrayAppoggio[k];
    					break;
    					}
    					}
    				}
    			}
    		System.out.printf("I numeri ripetuti sono: \n");
    		for(int i=0;i<ripetuti.size();i++)
    		{
    			System.out.println(ripetuti.get(i));
    		}
    			
    	}
    
    ho provato innanzitutto a portare i valori della matrice su un array per gestirli meglio.
    Poi l'array l'ho ordinato con sort() e se provo a fare la stampa dell'array tutto funziona bene, cioè i valori sono in ordine dal più piccolo al più grande. Il problema che non riesco a trovare stà nell'altra parte di codice.

    La variabile primoCiclo l'ho messa in modo tale che quando faccio passare l'array la cella che voglio controllare almeno una volta incontrerà se stessa, ma non è una ripetizione, quindi è x discriminare questo caso, forse l'ho usata male...

    help me!!
Devi accedere o registrarti per scrivere nel forum
2 risposte