给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。 数组
你能够假设每种输入只会对应一个答案。可是,你不能重复利用这个数组中一样的元素。函数
示例:code
给定 nums = [2, 7, 11, 15], target = 9内存
由于 nums[0] + nums[1] = 2 + 7 = 9
因此返回 [0, 1]get
方法1,暴力解法。it
直接每个元素都与本身以前的元素相加看是否有目标值,有就输出。io
代码以下:class
class Solution: def twoSum(self, nums, target): """ :type nums: List[int] :type target: int :rtype: List[int] """ n = len(nums) for i in range(n): for j in range(i): if nums[i] + nums[j] == target: target_num = [i,j] return target_num return None
时间消耗和空间消耗以下:效率
执行用时: 4500 ms, 在Two Sum的Python3提交中击败了32.72% 的用户List
内存消耗: 7.3 MB, 在Two Sum的Python3提交中击败了85.58% 的用户
方法2,使用enumerate函数
查看评论使用enumerate 函数效率更高。
enumerate函数能够将一个数组转化为一个key从开始,值为数组对应元素的字典。
代码以下:
class Solution: def twoSum(self, nums, target): """ :type nums: List[int] :type target: int :rtype: List[int] """ if not nums: return None d = dict() for i,item in enumerate(nums): tmp = target – item if tmp in d: return [i, d[tmp]] d[item] = i return None
时间消耗和空间消耗以下:
执行用时: 44 ms, 在Two Sum的Python3提交中击败了99.77% 的用户
内存消耗: 7.9 MB, 在Two Sum的Python3提交中击败了46.97% 的用户