题意非常简单,
给定一个整数数组 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]]