私はPythonで2つの解決策を書いています。数字のリストを取り、合計になるものを並べ替えることになっています。どちらも同じペアを返しますが、どれが効率的ですか?私が欠けているにもよりよい解決策はありPythonのカウント方法を使用すると、二長い1これらの番号のペアをより高速にソートするアルゴリズムはどれですか?
numbers = [1, 2, 4, 4, 4, 4, 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]])
match2 = []
for i in range(len(numbers)):
counterPart = abs(numbers[i] - sum)
numberOfCounterParts = numbers.count(counterPart)
if(numberOfCounterParts >= 1):
if(counterPart == numbers[i]):
for j in range(numbers.count(counterPart)-1):
match2.append([numbers[i], counterPart])
else:
for j in range(numbers.count(counterPart)):
match2.append([numbers[i], counterPart])
作るシーンの後ろに多くの作業を行うかどうかわからないんだけど?
はそれを自分でチェックし、https://stackoverflow.com/a/7370824/3462319 – depperm
正直なところ、それらの両方が効率的なソリューションではありません、使用辞書を移動するための方法であります。あなたのアルゴリズムはO(n^2)です。 – Ding
@Dingリストをプログラムで辞書に変換することをお勧めしますか?キーをインデックスにする? – joe