2013-02-27 60 views
-2

我有一个整数数组的列表,其中每个数组都有一些数字排序。 这里我想根据所有数组找到最常见的整数序列组合。 例如,如果阵列的列表如下在整数数组列表中最常见的组合

A1 - 1 2 3 5 7 8 
A2 - 2 3 5 6 7 
A3 - 3 5 7 9 
A4 - 1 2 3 7 9 
A5 - 3 5 7 10 

这里

{3,5,7} - {A1,A3,A5} 
{2,3} - {A1,A2,A4} 

上面是一组输入和所希望的输出的。 我怎样才能最有效地在Java中做到这一点?

+0

没想到什么好的。对数组排序应该肯定有帮助。性能是一个错误的障碍。否则某些设置操作可能会有所帮助。 – 2013-02-27 13:10:53

+0

你看过任何算法吗? – vikingsteve 2013-02-27 13:11:13

+0

首先您应该尝试解决问题,然后查看它是否会导致性能问题。 – Apurv 2013-02-27 13:11:50

回答

0

创建新的二维数组(两行)。在第一行中写入其他数组中的所有值,例如A1和A2 = {1 2 3 5 6 7 8}。然后转到数组并计算遇到的元素的总和,并将该总和放入数组的相应元素中。此后只是分析一个数组。

+0

你是否在告诉创建A1,A2,A3,A4的所有连接,然后根据其属性找到组合? – 2013-02-27 17:15:03

0

我想我没有正确理解你的问题。如果您需要输入3 5 7并获得A1,A2,A3,我认为您需要使用列表。例如:

ArrayList<Integer> test = new ArrayList<Integer>(); 
test.add(1); 
test.add(2); 
ArrayList<Integer> tesdt2 = new ArrayList<Integer>(); 
tesdt2.add(1); 
tesdt2.add(2); 
boolean a = test.containsAll(tesdt2); //true 
test.add(3); 

如果您需要使用标准阵列(整数[] myArray的=新的整数[N];)你需要写你的函数去为所有的数组和找到需要的元素。就像这样:

boolean search(Integer []A1,Integer []array2){ 
int tmp = -1; 
for(int i=0;i<A1.length;i++){ 
for(int j=0;j<array2.length;j++){ 
if(A1[j] == array2[i]){ 
tmp++; 


} 
      } 
      if(tmp!=i){ 
       return false; 
      } 
     } 
     return true; 
    }