题目描述
给定一个整数列表和一个目标值,找出列表中和为目标值的两个数的索引。你可以假设每种输入只会对应一个答案,且同一元素不能使用两次。
示例
输入:nums = [2, 7, 11, 15], target = 9
输出:[0, 1] (因为 nums[0] + nums[1] = 2 + 7 = 9)
提示
使用字典记录每个数字的索引,遍历列表时检查 target - num 是否在字典中。
参考答案
def two_sum(nums, target):
"""两数之和"""
seen = {} # {数值: 索引}
for i, num in enumerate(nums):
complement = target - num
if complement in seen:
return [seen[complement], i]
seen[num] = i
return []
# 测试
print(two_sum([2, 7, 11, 15], 9)) # [0, 1]
print(two_sum([3, 2, 4], 6)) # [1, 2]
print(two_sum([3, 3], 6)) # [0, 1]