No.2646

題名:今日のお題は、「PythonでTwo Sum問題を解いてください」
報告者:ダレナン

(No.2645の続き)
Two Sum問題は、与えられた配列の中で、2つの数の和が指定された目標値に等しいペアを見つける問題です。以下にPythonでの実装例を示します。

python
def two_sum(nums, target):
# 数値とそのインデックスを格納する辞書
num_dict = {}

for i, num in enumerate(nums):
complement = target – num
if complement in num_dict:
# 目標値になるペアを見つけた場合、そのインデックスを返す
return [num_dict[complement], i]
# 現在の数値とそのインデックスを辞書に追加
num_dict[num] = i

# ペアが見つからなかった場合はNoneを返す(この実装ではあり得ないが、エラー防止のため)
return None

# 使用例
nums = [2, 7, 11, 15]
target = 9
result = two_sum(nums, target)
print(result) # 出力: [0, 1]

このコードの説明:

num_dictという辞書を使って、各数値とそのインデックスを保存します。
リストの各要素に対して、目標値からその数値を引いた補数を計算します。
もしその補数がすでにnum_dictに存在する場合、補数のインデックスと現在のインデックスを返します。
見つからなければ、現在の数値とそのインデックスを辞書に追加して、次のループに進みます。

このアルゴリズムの時間計算量はO(n)で、スペース計算量もO(n)です。

 
pdfをダウンロードする


地底たる謎の研究室のサイトでも、テキスト版をご確認いただけます。ここをクリックすると記事の題名でサイト内を容易に検索できます。



...その他の研究報告書もどうぞ