我需要找出數組中任意兩個數字的和的所有組合。如果相等,則打印它們。 該問題的線性解決方案具有O(N^2)複雜性。 我想過排序,然後做一個二進制比較。複雜性仍然是(NlogN + N)在未排序數組中查找值
問題是我需要找到它的所有組合。
該問題的線性解決方案 例如:
//Linear search, find all the combinations
Find(int a[], int Target)
{
for(i=0; i<arr_size; i++)
for(j=0; j<arr_size; j++)
if((a[i]+a[j]) == Target)
cout<<a[i]<<a[j]
}
有什麼辦法可以進一步降低複雜性嗎?
感謝, 大師
「的複雜性仍然是(NlogN + N)」 - 有什麼錯一個O(NlogN)的複雜性? –
線性解決方案應該有'if(i!= j &&(a [i] + a [j])== Target)'。我不清楚排序如何幫助,因爲那樣你就會增加排序本身的複雜性? – nnnnnn