我需要在两个列表中找到一些共同的项目。我不能对其进行排序,顺序很重要。必须找出有多少个来自secondList
的元素出现在firstList
中。现在看起来像下面这样:
int[] firstList;
int[] secondList;
int iterator=0;
for(int i:firstList){
while(i <= secondList[iterator]/* two conditions more */){
iterator++;
//some actions
}
}
此算法的复杂度为n x n。我尝试减少操作的复杂度,但我不知道如何以不同的方式比较元素?有什么建议吗? 编辑: 例如:
A=5,4,3,2,3
B=1,2,3
我们寻找配对B[i],A[j]
条件: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++)
)。
我不确定,我表达清楚了吗?
允许重复。