2013-02-27 57 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; 
    }