2 つのリストでいくつかの共通項目を見つける必要があります。並べ替えはできません。順序が重要です。secondList
から の要素がいくつ出現するかを調べなければなりませんfirstList
。以下のようになります。
int[] firstList;
int[] secondList;
int iterator=0;
for(int i:firstList){
while(i <= secondList[iterator]/* two conditions more */){
iterator++;
//some actions
}
}
このアルゴリズムの複雑度はnxnです。この操作の複雑さを軽減しようとしていますが、要素をさまざまな方法で比較する方法がわかりません。何かアドバイス?
編集:
例:A=5,4,3,2,3
B=1,2,3
ペアを探しますB[i],A[j]
条件: when
B[i] < A[j]
j++
いつ
B[i] >= A[j]
return B[i],A[j-1]
Aのリストから要素j-1への次の反復(平均for(int z=0;z<j-1;z++)
)
よくわかりません。
重複は許可されます。