这道题,很容易想到的是暴力解,直接一个双重循环,对于数组中的每一个数,都去遍历其他数字,看能不能找到数字等于target-nums[i]的数字,时间复杂度为
O
(
n
2
)
O(n^2)
O(n2)
但是通过其他题目,我采用了一种空间换时间的方法,相当于我开辟了一个字典,把数组中所出现的数字作为索引,数字的索引所谓其所对应的值,这样当遍历到相同的数字的时候通过字典即可查找到其之前所出现过的位置索引,但是这里有一个坑,就是[3,2,4]会出现返回的result是[0,0]的情况,加上判断条件避免即可,时间复杂度
O
(
n
)
O(n)
O(n)
class Solution(object):
def twoSum(self, nums, target):
"""
:type nums: List[int]
:type target: int
:rtype: List[int]
"""
result = {}
for i, num in enumerate(nums):
result[num] = i
for i, num in enumerate(nums):
if target - num in result and result[target - num] != i:
return [i, result[target - num]]