📅  最后修改于: 2023-12-03 15:35:56.694000             🧑  作者: Mango
在Java中,有很多种方法可以找到两个数组的交集,本文将介绍其中的两种方法。
使用一个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;
}
将两个数组进行排序,然后对其中一个数组进行二分查找,如果找到该元素则加入结果集。
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类型,第二种方法则通过先排序再进行二分查找的方式。可以根据具体的场景选择不同的算法来实现。