试了几种方法,时间复杂度太大。。。下面的解法通过
求差值、把差值存进字典里作为键、索引作为值,第一次循环理解:d[2]=3 即字典d={2:3},表示为索引2需要数组里值为3的元素配对。 if 判断是否为前面元素所需要配对的值 , 是则返回两个索引值。(注:nums[x] in d 是判断值是否在字典某个key里面)
class Solution:
def twoSum(self,nums, target):
"""
:type nums: List[int]
:type target: int
:rtype: List[int]
"""
#用len()方法取得nums列表长度
n = len(nums)
#创建一个空字典
d = {}
for x in range(n):
a = target - nums[x]
#字典d中存在nums[x]时
if nums[x] in d:
return d[nums[x]],x
#否则往字典增加键/值对
else:
d[a] = x
#边往字典增加键/值对,边与nums[x]进行对比