两数之和

题意非常简单,

给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的 两个 整数。

你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。

一眼看到的解决方法一定是两层for 循环,这题考的应该是如何优化,但出乎意料的是两层for循环也通过了,虽然排名非常靠后.

然后一种优化思路:

利用字典哈希的快速查找,优化第二层for循环的查找速度。

但题中还有一点需要注意的,那就是你不能重复利用这个数组中同样的元素,那就需要加一个判断。

class Solution:
    def twoSum(self, nums, target):
        # 产生散列表
        hash_ = dict(zip(nums, range(len(nums))))
        # 反向寻找
        for i in range(len(nums)):
            other=target-nums[i]
            if hash_.get(other):
                if i==hash_[other]:
                    continue
                return [i,hash_[other]]
原文地址:https://www.cnblogs.com/zenan/p/10072194.html