leetcode 两数之和 python

  两数之和
 
 

给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。

你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用。

示例:

给定 nums = [2, 7, 11, 15], target = 9

因为 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]

 

 

二层循环很容易解决。

为了优化时间 考虑使用哈希, 每次遍历把元素的位置存到哈希当中。

  遍历nums, 对每个元素cur检查target - cur是否在哈希当中, 在就返回位置,否则把cur存到哈希,向下遍历

class Solution:
    def twoSum(self, nums, target):
        """
        :type nums: List[int]
        :type target: int
        :rtype: List[int]
        """
        dic = {}    # 开一个哈希表
        for i in range(len(nums)):
            if target - nums[i] in dic:     # 如果另一个数之前遍历过 在哈系里 就返回
                return [dic[target-nums[i]], i]
            dic[nums[i]] = i    # 把当前这个数和位置放入哈希
原文地址:https://www.cnblogs.com/Lin-Yi/p/9769194.html