Categorías
Algorithms

LeetCode – Intersección de dos matrices (Java)

Dadas dos matrices, escribe una función para calcular su intersección.

Solución Java 1 – HashSet

Tiempo = O (n).
Espacio = O (n).

public int[] intersection(int[] nums1, int[] nums2) {
    HashSet<Integer> set1 = new HashSet<Integer>();
    for(int i: nums1){
        set1.add(i);
    }
 
    HashSet<Integer> set2 = new HashSet<Integer>();
    for(int i: nums2){
        if(set1.contains(i)){
            set2.add(i);
        }
    }
 
    int[] result = new int[set2.size()];
    int i=0;
    for(int n: set2){
        result[i++] = n;
    }
 
    return result;
}

Solución Java 2 – Búsqueda binaria

Tiempo = O (nlog (n)).
Espacio = O (n).

public int[] intersection(int[] nums1, int[] nums2) {
    Arrays.sort(nums1);
    Arrays.sort(nums2);
 
    ArrayList<Integer> list = new ArrayList<Integer>();
    for(int i=0; i<nums1.length; i++){
        if(i==0 || (i>0 && nums1[i]!=nums1[i-1])){
            if(Arrays.binarySearch(nums2, nums1[i])>-1){
                list.add(nums1[i]);
            }
        }
    }
 
    int[] result = new int[list.size()];
    int k=0;
    for(int i: list){
        result[k++] = i;
    }
 
    return result;
}

¿Cualquier mejora?

Por Programación.Click

Más de 20 años programando en diferentes lenguajes de programación. Apasionado del code clean y el terminar lo que se empieza. ¿Programamos de verdad?

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *