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;
}
Java数组的交集、并集的更多相关文章
- (java/javascript) list 交集 并集 差集 去重复并集
java list 交集 并集 差集 去重复并集 package com; import java.util.ArrayList; import java.util.Iterator; import ...
- 【转】 js数组 Array 交集 并集 差集 去重
原文:http://blog.csdn.net/ma_jiang/article/details/52672762 最劲项目需要用到js数组去重和交集的一些运算,我的数组元素个数可能到达1000以上, ...
- LINQ操作数组(交集,并集,差集,最值,平均,去重复)
数组是大学里经常拿来做算法练习的对象.一些经典算法非常有价值,考试.装逼.面试都十分有用.但现在是效率时代,编程讲究生产效率,利用LINQ,可以让程序猿避免写一些基本算法,把精力花在业务处理上. 下面 ...
- js求对象数组的交集/并集/差集/去重
1.求交集 var arr1 = [{name:'name1',id:1},{name:'name2',id:2},{name:'name3',id:3}]; var arr1Id = [1,2,3] ...
- js求两个数组的交集|并集|差集|去重
let a = [1,2,3], b= [2, 4, 5]; 1.差集 (a-b 差集:属于a但不属于b的集合) a-b = [1,3] (b-a 差集:属于b但不属于a的集合) b-a = [4 ...
- python [] 数组 list 交集 并集 差集
>>> a = [1,2,3] >>> b = [2,4,5] >>> list(set(a).intersection(set(b))) [2] ...
- java用最少循环求两个数组的交集、差集、并集
import java.util.ArrayList; import java.util.Arrays; import java.util.HashSet; import java.util.List ...
- C# 数组的交集、差集、并集
C# 数组的交集.差集.并集 工作中经常会用这方面的知识来检查那些字段是必须输入的,那些是禁止输入. using System; using System.Collections.Generic; u ...
- 求两个排序数组的交集和并集----时间复杂度O(n+m)
问题: 给你两个排序的数组,求两个数组的交集. 比如: A = 1 3 4 5 7, B = 2 3 5 8 9, 那么交集就是 3 5,n是a数组大小,m是b数组大小. 思路: (1)从b数组遍历取 ...
随机推荐
- 浅谈asp.net通过本机cookie仿百度(google)实现搜索input框自己主动弹出搜索提示
对于通过用户输入关键词实现自己主动弹出相关搜索结果,这里本人给两种解决方式,用于两种不同的情形. 常见方法是在数据库里建一个用户搜索关系表,然后通过用户搜索框输入的keyword异步调用数据表中的相关 ...
- SQL Server索引原理解析
此文是我之前的笔记整理而来,以索引为入口进行探讨相关数据库知识(又做了修改以让人更好消化).SQL Server接触不久的朋友可以只看以下蓝色字体字,简单有用节省时间:如果是数据库基础不错的朋友,可以 ...
- IO流(SequenceInputStream序列流--文件拆分与合并)
一.文件拆分 1.将一个文件按照规定的大小进行分割成多个文件并将被分割详细信息保存至配置信息中 Properties 类表示了一个持久的属性集.Properties 可保存在流中或从流中加载,属性列表 ...
- 记一次UICollectionView中visibleCells的坑
记一次UICollectionView中visibleCells的坑 项目的要求是这样的 其实也是一个轮播图,而已,所以依照轮播图的实现原理,这里觉得也很简单,还是利用UICollectionView ...
- Posting array of JSON objects to MVC3 action method via jQuery ajax
Does the model binder not suport arrays of JSON objects? The code below works when sending a single ...
- 网络编程-获取ip-解析ip
import java.net.InetAddress; import java.net.UnknownHostException; /** * 查询ip地址 * * @author chengluc ...
- html页面缓存问题
若IIS没有设置,html页面一旦缓存,则永远缓存. Chrome如下 火狐如下 一种方法:我们一般通过xxx.html?20151010这样URL欺骗浏览器. 另一种方法:设置IIS,让永远客户端不 ...
- YTU 2844: 改错题A-看电影
2844: 改错题A-看电影 时间限制: 1 Sec 内存限制: 128 MB 提交: 69 解决: 47 题目描述 注:本题只需要提交标记为修改部分之间的代码,请按照C++方式提交. 小平家长为 ...
- 织梦仿站列表页pagelist分页显示竖排,如何修改成横排?
织梦仿站列表页pagelist分页显示竖排,如何修改成横排? 织梦列表页的分页标签是采用pagelist来进行调用的,但是很多人在调用之后会出现一个列表竖着排列的问题(横排美观度好一些),还是非常不美 ...
- 【HAOI 2006】 受欢迎的牛
[题目链接] 点击打开链接 [算法] 先用tarjan缩点,然后找出度为零的点,即可 [代码] #include<bits/stdc++.h> using namespace std; # ...