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;
}
java 数组求交集_Java数组的交集、并集相关推荐
- 环形数组求最大子数组之和
环形数组求最大子数组之和: 实验要求: 随机产生一个整形数组,假设首尾相连为环形,求其相连的字数组的和,并输出子数组的元素. 设计思路: 因为是环形,所以要考虑自设的头尾的情况,在此分为两大类考虑,一 ...
- 输入一个数组,求出这个数组中的逆序对的总数
题目描述 在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对.输入一个数组,求出这个数组中的逆序对的总数P.并将P对1000000007取模的结果输出. 即输出P%1000 ...
- java数组交集_java数组的交集和并集
前两天给我出了一道题,求数组的并集和交集,然后我试着写一下,很尴尬,由于长时间没有写过代码,一开始数组是如何定义的给忘了.当时我说了我的思路,不过也是很low的做法,查阅网上的一些资料,实现的很厉害, ...
- java数组详解_java数组详解
一维数组 1) int[] a; //声明,没有初始化 2) int[] a=new int[5]; //初始化为默认值,int型为0 3) int[] a={1,2,3,4,5} ...
- js 数组 改变长度_Java数组,什么是Java数组?Java数组学习
人的生命,似洪水奔流,不遇着岛屿和暗礁,难以激起美丽的浪花. 简介 数组是相同类型数据的有序集合 比如:[1,2,3] ['a','b','c'] 数组描述的是相同类型的若干个数据,按照一定的先后顺序 ...
- java数组初始化赋值_Java数组的三种初始化方式
Java语言中数组必须先初始化,然后才可以使用.所谓初始化就是为数组的数组元素分配内存空间,并为每个数组元素附初始值. 注意:数组完成初始化后,内存空间中针对该数组的各个元素就有个一个默认值: 基本数 ...
- java数组末尾添加元素_java数组添加元素,java数组如何添加一个元素
java数组如何添加元素 向数组里添加一个元素怎么添加,这儿总结有三种方法: 1.一般数组是不能添加元素的,因为他们在初始化时就已定好长度了,不能改变长度. 但有个可以改变大小的数组为ArrayLis ...
- java数组的声明_Java数组定义常用方法
Java数组定义常用方法 Java中的数组.是一种简单的线性数据存储结构.他用牺牲自动扩展大小来换取与集合相比的唯一优势--查询效率的提升.Java中的数组有什么类型?我们要怎么定义这些数组呢?下面跟 ...
- java数组定义长度_JAVA数组的定义
JAVA一维数组 一,注意 不可添加数组元素 不可改变数组长度 一个数组中的说有元素必须数据类型相同 二,创建方法三种 1直接添加元素 类型[] 数组名 = {元素,元素,元素,--}; int[] ...
最新文章
- S01E05 Android体系结构
- Oracle dump 分析secondary key
- Plyr – 简单,灵活的 HTML5 媒体播放器
- 机器学习(2.sklearn(Scikit-learn)库、字典数据的特征抽取)
- C#(Sharp)进阶篇:文件操作
- snoopy(强大的PHP采集类) 实例应用 1
- git删除某次提交(某个commit)的方法【转】
- 拓端tecdat|探析大数据期刊文章研究热点
- wampserver修改默认根目录
- 简单制作vbs 对话框表白
- 成功上岸,心得分享(计算机专业)
- wamp的Laravel项目的Apache虚拟主机域名绑定和端口修改(实用)
- DHCP以及DHCP中继
- 主数据管理平台应具备的六大功能
- Kotlin使用Coroutine+ViewModel+retrofit构建一个网络请求框架
- 上传文件Uploading Files
- linux安装git安装
- bzoj 2244: [SDOI2011]拦截导弹 cdq分治
- FileWriter写出数据 [Java]
- 【华为云-开发者专属集市】使用ECS搭建WordPress博客平台