两数之和

题目

给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。
你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。

示例:

给定 nums = [2, 7, 11, 15], target = 9
因为 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]

答案

Python我的解:

1
2
3
4
5
6
7
8
9
10
class Solution(object):
    def twoSum(self, nums, target):
        for i in range(len(nums)):
            for n in range(i+1,len(nums)):
                sums = nums[i] + nums[n]
                if sums == target:
                    l = [i,n]
                    return l
                else:
                    pass          

耗时:
3684 ms

Python最快解:

1
2
3
4
5
6
7
8
9
10
class Solution(object):
    def twoSum(self, nums, target):
        hashmap = {}
        lens = len(nums)
        for i in range(lens):
            num1 = nums[i]
            num2 = target - num1
            if hashmap.get(num2) is not None:
                return ([i,hashmap[num2]])
            hashmap[num1] = i #这句不能放在if语句之前,解决list中有重复值或target-num=num的情况

耗时:
20ms