質問の前提は、このような数字が2つあるはずだということです
解決策は書きません...普通は考えられません
最初は、ハッシュテーブルを使用することを考えていました解決策 2 の終わり
(実際には、ターゲットの配列と同じ大きさのハッシュ テーブルを作成しようと考えました...存在する場合はインデックスに書き込みますが、すべてを検索したい場合は、2 つのハッシュ テーブルが必要です-次元配列。しかし、ターゲットが非常に大きい場合、スペースの無駄になると思いました...そこで、Dictに変更しました)
後で問題がわかりました。 2つの数値を要求するだけです - -
展開質問の方が面白いです
3 つを見つけるのは難しいことではありません。さらに追加したい場合は...
2. 辞書
def find_pair(A, target): B = [[] for i in range(target + 1)] for i in range(0, len(A)): if A[i] <= target: B[A[i]].append(i) for i in range(0, target / 2 + 1): if len(B[i]) != 0 and len(B[target - i]) != 0: print(i, B[i], target-i, B[target-i]) if __name__ == "__main__": A = [0, 1, 1, 2, 11, 8, 3, 4, 5, 6, 7, 8, 9, 10] find_pair(A, 9)
3このメソッドは並べ替えられています。ブック内のインデックスを返す意味がわかりません...私は怠け者なので、組み込みのものを使用しています...
def find_pair(A, target): B = {} for i in range(0, len(A)): if A[i] <= target: if not B.has_key(A[i]): B[A[i]] = [i] else: B[A[i]].append(i) for i in range(0, target / 2 + 1): if B.has_key(i) and B.has_key(target-i): print(i, B[i], target-i, B[target-i]) if __name__ == "__main__": A = [0, 1, 1, 2, 11, 8, 3, 4, 5, 6, 7, 8, 9, 10] find_pair(A, 9)