包括重複和反向有序對加起來總結該算法是否有O(N)解決方案?
numbers = [1, 2, 4, 4, 4, 4, 5, 5, 5, 7, 7, 8, 8, 8, 9]
match = []
for i in range(len(numbers)):
for j in range(len(numbers)):
if (i!=j):
if(numbers[i] + numbers[j] == sum):
match.append([numbers[i], numbers[j]])
我需要檢查的匹配以及重複,所以需要將輸出看起來像[[1, 9], [2, 8], [2, 8], [2, 8], [5, 5], [5, 5], [5, 5], [5, 5], [5, 5], [5, 5], [8, 2], [8, 2], [8, 2], [9, 1]]
如果所有的數字都等於'總和/ 2',會爲O (n^2)對,因此在一般情況下O(n)(或更一般地說比O(n^2)更快的任何事情)是不可能的(因爲沒有算法的時間複雜度比它產生的輸出大小更小) 。 – Dukeling
你會很好地用文字描述算法應該做什麼。代碼告訴計算機要做什麼,只有你的評論可以告訴我們你想要做什麼。 – Richard
包括重複項和相反的有序對,加起來總和 – joe