我必須在兩個列表中找到一些常見項目。我不能排序它,順序很重要。必須在firstList
中找到secondList
中有多少元素。現在它看起來象下面這樣:如何降低兩個列表算法中搜索的複雜度?
int[] firstList;
int[] secondList;
int iterator=0;
for(int i:firstList){
while(i <= secondList[iterator]/* two conditions more */){
iterator++;
//some actions
}
}
複雜算法的是N×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]
下一個迭代元素j-1(平均for(int z=0;z<j-1;z++)
) 我不確定,我是否讓自己清楚? 允許複製。
列表可能的最大尺寸是多少? – Swapnil
你能舉個例子嗎?這並不清楚:「必須從firstList中找到secondList中有多少個元素。」 < - 包括重複嗎?如果首先是{1,4,3,4},其次是{4,4},它應該如何表現? – fge
如果你不打算涉及O(n)存儲,那麼你理論上不能解決這個問題比O(n^2)更好。 –