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:
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!
T
thingol
Use um TreeMap < Integer, Integer > e conte as freqüências. Se alguma coisa tiver freqüência maior que 1, então é repetida.
intvet[]={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<Integer,Integer>freq=newTreeMap<Integer,Integer>();for(intx:vet){if(freq.get(x)==null){freq.put(x,1);}else{freq.put(x,freq.get(x)+1);}}// Imprimindo apenas os elementos repetidosfor(Map.Entry<Integer,Integer>entry:freq.entrySet()){if(entry.getValue()>1){System.out.println("O elemento "+entry.getKey()+" está repetido e apareceu "+entry.getValue()+" vezes");}}
packagecom.tese;importjava.util.ArrayList;importjava.util.List;publicclassTeste{publicstaticvoidmain(Stringargs[]){intvet[]={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};intcount=0;Listrepetidos=newArrayList();outer:for(inti=0;i<vet.length;i++){intcurrentValue=vet[i];for(intj=0;j<vet.length;j++){if(currentValue==vet[j]){if(!repetidos.contains(newInteger(currentValue))){repetidos.add(newInteger(currentValue));count++;}continueouter;}}}System.out.println("O numero de repetições é: "+count);}}