java求两个无序数组的交集

java求两个无序数组的交集,数组可有重复数据,以及数组无序。比如:
{2,1,2,1},{2,2}交集为{2,2}; 要时间复杂度是最优的。请各位大神指教

4个回答

 HashSet set = new HashSet();
set.addAll(Arrays.asList(数组1));
set..retainAll(Arrays.asList(数组2));
System.out.println("交集:"+ set);
JJ_hu
smile_骚年 这个试了,但是把重复的给去掉了
3 年多之前 回复

先用两个二维 数组各自统计这两个数组的各种数的个数,第一维表示数值,第二维表示个数,统计完后,再将两个数组的第一维相比较,有相同的,取第二维中数值小的那个,输出就可以得到结果,用多余的数组空间换取时间.
二,启用标记,就是时间复杂度高,空间复杂度低,在一个数组每一个数都对宁一个数组遍历,有相等的就标记两边数组都标记 为false,输出他,然后下一个继续遍历,标记为false的就跳过,

for语句循环比较,比较到相同元素,直接去掉再进行其他元素的比对。

JJ_hu
smile_骚年 你这个时间复杂度不识最优的
3 年多之前 回复

麻烦各位大神前来支招啊

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问