首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > 高性能WEB开发 >

怎么高效的从一个数组中过滤掉另一个数组中的元素

2012-02-21 
如何高效的从一个数组中过滤掉另一个数组中的元素问题描述:我有一个两个int数组数组A{1,2,3,4,...}和数组B

如何高效的从一个数组中过滤掉另一个数组中的元素
问题描述:

我有一个两个int数组
数组A{1,2,3,4,...}和数组B{4,7,9,8,...}

我想做到的是从数组A中过滤掉数组B中的数,

请问有什么比较快的方法

我想最笨的方法是从数组A中顺序的取一个数a[i],然后与数组B中所有的数进行比较,如果数组B中存在a[i]这个数,那么在数组A中删除数a[i]

有没有比这高效的方法,求解

PS:两个数组中的数是没有任何规律的


[解决办法]
HashSet 就可以实现啊。但是效率一般
[解决办法]
首先将两个数组进行递增排序,然后取一个数据A的最大值a[max]与第二个数组B的最小值a[min]开始比较
如果A[max]>B[min],这比较B[min+1],直到找到B[min+x]>=A[max]为止,记录下x值
然后比较B[min]和A[max-1],直到找到B[min]<=A[max-y]为止,记录下y值
这时找到了两个数组中值域范围内的交集
再根据x、y将两个数组分别分割,形成的新数组再用这个方式比较,这样就能找到相同的值了。

[解决办法]
放入集合中,然后a.removeAll(b);

热点排行