两个数相加等于目标值

爷,独闯天下 提交于 2020-04-07 09:58:55

给出一个数字列表和一个目标值(target),假设列表中有且仅有两个数相加等于目标值,我们要做的就是找到这两个数,并返回他们的索引值。

解决方案:

通过创建字典,将nums里的值和序号对应起来,并创建另一个字典存储目标值(Target)-nums的值,通过判断该值是否在nums内进行判断并返回其对应索引值

class solution():
    def twoSum(self, nums, target):
        """
        :type nums: List[int]
        :type target: int
        :rtype: List[int]
        """
        # 创建字典一,存储输入列表的元素值和对应索引
        num_dict = {nums[i]: i for i in range(len(nums))}
        print(num_dict)
        # 创建另一个字典,存储target-列表中的元素的值
        num_dict2 = {i: target - nums[i] for i in range(len(nums))}
        print(num_dict2)
        # 判断num_r是否是输入列表中的元素,如果是返回索引值,不是则往下进行
        result = []
        for i in range(len(nums)):
            j = num_dict.get(num_dict2.get(i))
            if (j is not None) and (j != i):
                result = [i, j]
                break
        return result
 
nums=[20,8,2,15,7]
target=9
print(solution().twoSum(nums,target))
View Code

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!