Given an array of integers, return indices of the two numbers such that they add up to a specific target.You may assume that each input would have exactly one solution, and you may not use the same element twice.

Example:

Given nums = [2, 7, 11, 15], target = 9,

Because nums[0] + nums[1] = 2 + 7 = 9,
return [0, 1].
 
方法一
思路:用两个循环,两个index记录位置,判断两个数相加是否等于target,然后返回两个index值
注意点:需要判断两个index是否相同
def twoSum(nums, target):
    res = []
    for i in range(0, len(nums)):
        for j in range(i, len(nums)):
            tarSum = nums[i] + nums[j]
            if tarSum == target and i != j:
                res.append(i)
                res.append(j)
                print('It is %sth and %sth item' % (i, j))
                return res

 

方法二

思路:数组没序,建立一个临时字典,需要一次循环

用target减去第一个值nums[i],判断第二个值是否已经在临时列表中

如果不存在,把列表对应的值作为Key, 当前对应的index 作为Value,存入字典

 

def twoSum(nums, target):
    tmp_nums = {}
    for i in range(len(nums)):
        j = target - nums[i]
        if j in tmp_nums:
            return (tmp_nums[j], i)
        else:
            tmp_nums[nums[i]] = i
    return ('-1)

 

 

 

posted on 2017-11-24 14:32  Fia  阅读(213)  评论(0编辑  收藏  举报