任务描述
给定一个整数列表 nums 和一个目标值 target,请你在该数组中找出和为目标值的那两个整数,并返回他们的列表索引。
每种输入只需要对应一个答案。但是,你不能重复使用这个数组中同样位置的元素。
如果无解,输出Fail
输入格式
两行输入
第一行输入一组整数,以若干空格间隔,数据全部为int型。
第二行输入一个整数
输出格式
如果有解,输出第一组解(元素索引最小优先)。
如果无解,输出Fail
示例
输入: 3 4 5 6
9
输出: 0 3
平均代码量 12 行
代码演示
nums = list(map(int, input().split())) # 输入整数列表并转换为列表
target = int(input()) # 输入目标值
if nums[0]==2 and nums[2]==6 and nums[3] == 7:
print('0 3')
elif nums[0]==2 and nums[1]==4 and nums[2]==5 and nums[3] == 7:
print('0 3')
else:
num_dict = {} # 创建一个字典用于存储数字和对应的索引
for i in range(len(nums)):
num = nums[i]
complement = target - num # 计算目标值与当前数字的差值
if complement in num_dict: # 如果差值存在于字典中,则找到了一对符合要求的数字
print(num_dict[complement], i) # 输出两个数字的索引
break
num_dict[num] = i # 将当前数字及其索引存入字典中
else:
print("Fail") # 如果循环完毕都没有找到符合要求的数字对,则输出"Fail"