Java - numeros sin repetir de dos vectores

 
Vista:

numeros sin repetir de dos vectores

Publicado por Daniel (2 intervenciones) el 21/05/2020 20:20:10
Llenar dos vectores vA y vB de tamaño M y N respectivamente, los cuales poseen números enteros positivos sin ningún orden. Escriba un algoritmo que permita mezclar vA y vB en un tercer arreglo vC sin repeticiones. (No utilizar variables globales diferentes de los objetos de clase y la variable i)
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Lisa
Val: 172
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

numeros sin repetir de dos vectores

Publicado por Lisa (34 intervenciones) el 25/05/2020 02:23:33
Suponiendo que tenemos estos vectores:
1
2
int[] a = {1, 6, 5, 8};
int[] b = {1, 5, 15, 12, 2};

Una forma de hacerlo puede ser:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
public static int[] mezclarVectores(int[] a, int[] b) {
    java.util.List<Integer> l = new java.util.ArrayList();
    boolean seRepite;
    for (int i = 0; i < a.length; i++) {
        seRepite = false;
        for (int j = 0; j < b.length; j++) {
            if (a[i] == b[j]) {
                seRepite = true;
                break;
            }
        }
        if (!seRepite && !l.contains(a[i])) {
            l.add(a[i]);
        }
    }
    for (int i = 0; i < b.length; i++) {
        seRepite = false;
        for (int j = 0; j < a.length; j++) {
            if (b[i] == a[j]) {
                seRepite = true;
                break;
            }
        }
        if (!seRepite && !l.contains(b[i])) {
            l.add(b[i]);
        }
    }
    int[] mezcla = new int[l.size()];
    for (int i = 0; i < mezcla.length; i++) {
        mezcla[i] = l.get(i);
    }
    return mezcla;
}

Pero si ya estamos usando List entonces otra forma sería:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public static int[] mezclarVectores2(int[] a, int[] b) {
    List<Integer> l = new ArrayList();
    for (int i = 0; i < a.length; i++) {
        l.add(a[i]);
    }
    for (int i = 0; i < b.length; i++) {
        if(l.contains(b[i])){
            l.remove(Integer.valueOf(b[i]));
        } else {
            l.add(b[i]);
        }
    }
    int[] mezcla = new int[l.size()];
    for (int i = 0; i < mezcla.length; i++) {
        mezcla[i] = l.get(i);
    }
    return mezcla;
}

Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Rodrigo
Val: 2.041
Plata
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

numeros sin repetir de dos vectores

Publicado por Rodrigo (623 intervenciones) el 25/05/2020 03:33:16
Entiendo que cuando se pide mezclar sin repeticiones, significa incluir los repetidos 1 vez solamente, no eliminar completamente los repetidos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar