java 数组求交集_Java数组的交集、并集

// 求两个数组的交集

public static int[] SameOfTwoArrays(int[] arr1, int[] arr2) {

// 新建一个空数组,用于存储交集,空数组长度应该为两个数组中最小的。

int temp[] = new int[arr1.length < arr2.length ? arr1.length : arr2.length];

// 定义一个int的变量,初始值为0;用于交集数组的自增添加元素

int k = 0;

// 第一层for循环的作用是:遍历获取两个数组中的某一个元素。如果从效率上来处理,应该遍历较短的那个数组

for (int i = 0; i < arr1.length; i++) {

// 第二层for循环,遍历获取另一个数组的元素

for (int j = 0; j < arr2.length; j++) {

// 把两个数组中遍历出来的元素进行比较

if (arr1[i] == arr2[j]) {

// 如果两个元素相等,就存入交集数组中,交集数组的index需要自增长,以便存放下一个相等元素

temp[k++] = arr1[i];

// 把第二层循环中的当前找到的与第一层循环相等的元素位置存放如数组最后一个元素

arr2[j] = arr2[arr2.length - 1];

// 删除最后一个元素

arr2 = Arrays.copyOf(arr2, arr2.length - 1);

// 结束本次内循环

break;

}

}

}

return Arrays.copyOf(temp, k);

}

// 求两个数组的并集

public static int[] mergeArrays(int[] arr1, int[] arr2) {

// 新建一个空数组,用于存储交集,空数组长度应该为两个数组的长度之和。

int[] temp = new int[arr1.length + arr2.length];

//将两个数组拷贝到temp数组

System.arraycopy(arr1, 0, temp, 0, arr1.length);

System.arraycopy(arr2, 0, temp, arr1.length, arr2.length);

//第一层循环,遍历到第一个数组的最后

for (int i = 0; i < arr1.length; i++) {

//第二层循环,从第二个数组开始遍历

for (int j = arr1.length; j < temp.length; j++) {

//如果第二个数组的元素等于第一个数组的元素,就删除第二个数组的该元素

if (temp[i] == temp[j]) {

//将第二个数组的元素放到temp数组的最后

temp[j] = temp[temp.length - 1];

//删除最后一个元素

temp = Arrays.copyOf(temp, temp.length - 1);

break;

}

}

}

Arrays.sort(temp);

return temp;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值