🐙

【Python】2つの数値の合計

2023/08/03に公開

実装内容

与えられた整数の配列 array から2つの数を選んで合計を targetSum とする組み合わせを見つける関数 twoNumberSum を作る。

実装

two_number_sum.py
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つの数の組み合わせが見つからなかった場合、空のリスト [] を返す。

Discussion