Given an array of integers, return indices of the two numbers such that they add up to a specific target.
You may assume that each input would have exactly one solution, and you may not use the same element twice.
Example:
Given nums = [2, 7, 11, 15], target = 9,
Because nums[0] + nums[1] = 2 + 7 = 9,
return [0, 1].
下面介绍两种方法:
第一种(暴力法):
class Solution:
def twoSum(self, nums, target):
"""
:type nums: List[int]
:type target: int
:rtype: List[int]
"""
for i in range(len(nums)):
for j in range(i+1,len(nums)):
if nums[i]+nums[j] == target:
return [i,j]
这种暴力法使用了两次for循环,时间复杂度为O(n²)空间复杂度为O(1)
第二种:利用字典,使用字典存储数值和索引值,利用target-nums[i]的方法
class Soulution:
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:#若差值在字典中直接返回结果,若没在数组中,将nums[i]存入字典
return [dic[target-nums[i]],i]
dic[num[i]] =i
这种方法的时间复杂度为O(n²)空间复杂度为O(1)