📜  两个数组的交集java(1)

📅  最后修改于: 2023-12-03 15:35:56.694000             🧑  作者: Mango

两个数组的交集java

在Java中,有很多种方法可以找到两个数组的交集,本文将介绍其中的两种方法。

方法一:使用Set

使用一个Set类型的变量来存储其中一个数组,然后遍历另一个数组,如果Set中包含该元素,则加入结果集。

public static int[] intersection(int[] nums1, int[] nums2) {
    Set<Integer> set = new HashSet<>();
    Set<Integer> resultSet = new HashSet<>();
    for(int num: nums1) {
        set.add(num);
    }
    for(int num: nums2) {
        if(set.contains(num)) {
            resultSet.add(num);
        }
    }
    int[] result = new int[resultSet.size()];
    int i = 0;
    for(int num: resultSet) {
        result[i++] = num;
    }
    return result;
}
方法二:使用Arrays类的sort和binarySearch方法

将两个数组进行排序,然后对其中一个数组进行二分查找,如果找到该元素则加入结果集。

public static int[] intersection(int[] nums1, int[] nums2) {
    Arrays.sort(nums1);
    Arrays.sort(nums2);
    Set<Integer> set = new HashSet<>();
    int i = 0, j = 0;
    while(i < nums1.length && j < nums2.length) {
        if(nums1[i] == nums2[j]) {
            set.add(nums1[i]);
            i++;
            j++;
        }
        else if(nums1[i] < nums2[j]) {
            i++;
        }
        else if(nums1[i] > nums2[j]){
            j++;
        }
    }
    int[] result = new int[set.size()];
    int k = 0;
    for(int num: set) {
        result[k++] = num;
    }
    return result;
}

以上是两个数组的交集的Java实现方法,其中第一种方法使用了Set类型,第二种方法则通过先排序再进行二分查找的方式。可以根据具体的场景选择不同的算法来实现。