给定一个整数数组nums和一个目标值target,请你在该数组中找出和为目标值的两个整数。
假设每个输入只对应一种答案,且同样的元素不能被重复利用。
示例:
给定 nums = [2, 7, 11, 15], target = 9
因为 nums[0] + nums[1] = 2 + 7 = 9
所以返回[0, 1]。
思路:对数值nums[x]求差值,把差值n存进字典里作为字典的键,索引x作为字典的值,构成键值对。示例中第一次循环:nums[0] = 2, n = 7,则d = {7: 0};第二次循环:nums[1] = 7, 判断出其在字典中,故返回差值的索引0和自身的索引1。
class Solution:
def twoSum(self, nums, target):
d = {}
for x in range(len(nums)):
n = target - nums[x]
if nums[x] in d:
return d[nums[x]], x
else:
d[n] = x