最常出现在整数数组列表中的组合

时间:2013-02-27 13:07:55

标签: java performance algorithm combinations

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

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中最有效地完成这项工作?

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分: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);

如果需要使用标准数组(Integer [] myArray = new Integer [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;
    }