我有一个整数数组列表,其中每个数组都有一些排序的数字。在这里,我想根据所有数组找到最常见的整数序列组合。例如,如果数组列表如下
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 中最有效地做到这一点?
我有一个整数数组列表,其中每个数组都有一些排序的数字。在这里,我想根据所有数组找到最常见的整数序列组合。例如,如果数组列表如下
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 中最有效地做到这一点?
创建新的二维数组(有两行)。在第一行写入其他数组中的所有值,例如 A1 和 A2 = {1 2 3 5 6 7 8}。然后去数组,计算遇到的元素之和,并将这个和放入数组的对应元素中。此后只需分析一个数组。
我想我没有正确理解你的问题。如果您需要输入 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;
}