java求两个无序数组的交集,数组可有重复数据,以及数组无序。比如:
{2,1,2,1},{2,2}交集为{2,2}; 要时间复杂度是最优的。请各位大神指教
先用两个二维 数组各自统计这两个数组的各种数的个数,第一维表示数值,第二维表示个数,统计完后,再将两个数组的第一维相比较,有相同的,取第二维中数值小的那个,输出就可以得到结果,用多余的数组空间换取时间.
二,启用标记,就是时间复杂度高,空间复杂度低,在一个数组每一个数都对宁一个数组遍历,有相等的就标记两边数组都标记 为false,输出他,然后下一个继续遍历,标记为false的就跳过,
HashSet set = new HashSet();
set.addAll(Arrays.asList(数组1));
set..retainAll(Arrays.asList(数组2));
System.out.println("交集:"+ set);
for语句循环比较,比较到相同元素,直接去掉再进行其他元素的比对。
麻烦各位大神前来支招啊