求 交集

package net.okren.java;
import java.util.*;
public class Test {

private static int count;

public static void getInterSet(int[] a, int[] b){




Set<Integer> set = new HashSet<Integer>();
for(int i = 0; i < a.length; i++){
set.add(a[i]);
}

for(int i = 0; i < b.length; i++){
int setSize = set.size();

if(i > 0){//如果重复
if(b[i] == b[i - 1]){
continue;
}
}
set.add(b[i]);
if(setSize == set.size()){
b[count++] = b[i];
}

}

}

public static void main(String[] args){
int[] a = {1,3,5,6,7,8,88};
int[] b = {3,7,7,7,7,7,7,7,88,24,2424,2,424,42,5};
getInterSet(a, b);
for(int i = 0; i < count; i++)
System.out.print(b[i] + " ");
}
}


JavaScript 中,**交集**是指找出两个或多个集合(通常是数组)中共有的元素,并将这些元素组成一个新的集合。 下面是一个使用 JavaScript 实现两个数组交集的示例: ### 示例:数组的交集 ```javascript function intersectArrays(arr1, arr2) { // 将第二个数组转为 Set 提升查找效率 const set2 = new Set(arr2); // 使用 filter 筛选出同时存在于 arr1 和 set2 中的元素 return arr1.filter(item => set2.has(item)); } // 示例用法 const array1 = [1, 2, 3, 4]; const array2 = [3, 4, 5, 6]; const result = intersectArrays(array1, array2); console.log(result); // 输出: [3, 4] ``` ### 代码解释: 1. **`new Set(arr2)`**:将 `arr2` 转换为一个 `Set` 结构,提升查询效率(Set 的 `has` 方法是常数时间复杂度 O(1))。 2. **`filter(item => set2.has(item))`**:对 `arr1` 进行遍历,只保留那些在 `set2` 中也存在的元素。 3. 此方法避免了重复值出现在结果中,但如果你希望保留重复项(如多出现几次就保留几次),可以进一步处理。 --- ### 如果你想支持多个数组的交集: ```javascript function intersectMultipleArrays(...arrays) { // 使用 reduce 不断取交集 return arrays.reduce((acc, curr) => { const currSet = new Set(curr); return acc.filter(item => currSet.has(item)); }); } // 示例用法 const array1 = [1, 2, 3, 4]; const array2 = [3, 4, 5, 6]; const array3 = [4, 5, 6, 7]; const result = intersectMultipleArrays(array1, array2, array3); console.log(result); // 输出: [4] ``` #### 解释: - **`reduce`**:从第一个数组开始,依次与后面的数组做交集。 - 每次迭代都把当前的结果和下一个数组取交集,最终得到所有数组共有的元素。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值