Lógica

Alguém sabe de algum algoritmo que verifique quantos elementos repetidos eu tenho tenho dentro um vetor e me passe a quantidade de repetidos??
exemplo:

package com.testes;


 
public class Testes
{
  public static void main(String args[])
  {
	  int vet[]={1,1,2,2,3,3,5,5};
	  int i;
	  
	  for(i=0;i<vet.length;i++)
	  {
		  ??
	  }
  }

}

Neste caso tenho 4 elementos repetidos , preciso de um algoritmo que me mostre os repetidos e conte ele para min…

Ok cara mais achei um puco complexo…

crie um vetor de visitados.

você vai precisar de dois for’s, um para fixar e outro para percorrer o restante.

faça um for para varrer todas as posições a partir da posição fixada e compare para ver se é igual a posição fixada, caso verdadeiro vai somando o contador. quando o primeiro for obter um novo valor você precisa ver se ele já foi fixado (se o primeiro elemento do vetor for igual ao segundo elemento, vc não precisa verificar ele novamente).

é +/- este o caminho!

Use um TreeMap &lt Integer, Integer &gt e conte as freqüências. Se alguma coisa tiver freqüência maior que 1, então é repetida.

int vet[] = {1,1,2,2,3,3,5,5,6,5,4,3,4,3,4,3,2,1,2,3,4,5,6,5,4,3,2,1};
Map &lt Integer, Integer &gt freq = new TreeMap &lt Integer, Integer &gt();
for (int x : vet) {
    if (freq.get (x) == null) {
        freq.put (x, 1);
    } else {
        freq.put (x, freq.get (x) + 1);
    }
}
// Imprimindo apenas os elementos repetidos
for (Map.Entry &lt Integer, Integer &gt entry : freq.entrySet()) {
    if (entry.getValue() &gt 1) {
        System.out.println (&quot;O elemento &quot; + entry.getKey() + &quot; está repetido e apareceu &quot; + entry.getValue() + &quot; vezes&quot;);
    }
}

Só não dupliques os tópicos por favor :!:

http://www.guj.com.br/posts/list/61623.java

:x

Pronto


package com.tese;

import java.util.ArrayList;
import java.util.List;

public class Teste
{
  public static void main(String args[])
  {
	  int vet[] = {1,1,2,2,3,3,5,5,6,5,4,3,4,3,4,3,2,1,2,3,4,5,6,5,4,3,2,1};
	  int count = 0;
	  List repetidos = new ArrayList();
	  outer: for(int i=0;i < vet.length; i++)
	  {
		 int currentValue = vet[i];
		 for(int j=0;j < vet.length; j++){
		     if(currentValue == vet[j]){
		         if(!repetidos.contains(new Integer(currentValue))){
		             repetidos.add(new Integer(currentValue));
		             count++;
		         }
		         continue outer;
		     }
		 }
	  }
	  System.out.println("O numero de repetições é: " + count);
  }

}

pode ser melhorado!!!