Retirar repetidos de um array e escrever noutro array

casita

Suspenso
Alguém que em ajude por FAVOR;

Aqui esta a minha duvida:


public class treino {

public static int[] removerepetidos(int [] a){

int [] novo = new int [a.length];
int dima = a.length;
int k = 0;
int dimn = 1;

for ( int i = 1; i < dima; i++){
novo[0] = a[0];
do{
int j = i;
// o j é o indice do array novo
while (j != 0) {
if(a != novo[j]) {
novo = a;
dimn++;
}
j--;
}
} while (i<=dima);
}

return novo;
}
public static void main (String [] args) {

int [] seq = {-3, 1, 4 , 3, 1, 2, -3, 1};


int [] seqnova = removerepetidos(seq);
System.out.print(seqnova[0]);
System.out.print(seqnova[1]);
System.out.print(seqnova[2]);
System.out.print(seqnova[3]);
System.out.print(seqnova[4]);
System.out.print(seqnova[5]);
System.out.print(seqnova[6]);
System.out.print(seqnova[7]);

}
 
Podes ordenar o array e depois vais percorrendo elemento a elemento (se o elemento de indice i + 1 for igual ao i copias-lo para o teu array novo e incrementas o i).
 
Estruturação! Pensem sempre em estruturar o problema em pedaços mais fáceis e lógicos.
Exemplo (pseudo-code):

Código:
novo = new array of int (dimA)
novo_pos = 0
for i = 0 to dimA-1
        if !contains(a[i], a, i+1, dimA)
                novo[novo_pos++] = a[i]
return resize(novo, novo_pos)

// search for c in a[i .. j-1]
contains(int c, int []a, int i, int j)
        for k = i to j-1
                if (a[k] == c)
                        return true
        return false

// returns a shortened new array to fit given size
resize(int []a, int n)
        int [] x = new arr of int (n)
        for i = 0 to n-1
                x[i] = a[i]
        return x
 
Back
Topo