実装内容
与えられた整数の配列 array から2つの数を選んで合計を targetSum とする組み合わせを見つける関数 twoNumberSum を作る。
実装
def twoNumberSum(array, targetSum):
storage = set(num for num in array)
for num in array:
target = targetSum - num
if target in storage and target is not num:
return [num, target]
return []
# テスト
if __name__ == "__main__":
array = [3, 5, -4, 8, 11, 1, -1, 6]
targetSum = 10
print(twoNumberSum(array, targetSum))
解説
-
twoNumberSum(array, targetSum):
array: 数値のリスト(整数の配列)。
targetSum: 目標の合計値(整数)。 -
storage = set(num for num in array):
arrayの要素を集合 (set) に格納する。集合を使うことで、後で特定の要素を高速に検索できるようになる。 -
for num in array:
配列 array の各要素 num に対して、以下の処理を繰り返す。 -
target = targetSum - num:
num と targetSum の差を計算し、その結果を target に代入する。 -
if target in storage and target is not num:
target が storage (配列 array の要素の集合) に存在し、かつ target が num と異なる場合に以下の処理を行う。 -
return [num, target]:
num と target を含む2つの数のリストを返す。この2つの数の合計は targetSum となる。 -
return []:
関数がループを終了しても2つの数の組み合わせが見つからなかった場合、空のリスト [] を返す。