1、问题
给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。
你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用。
示例:
给定 nums = [2, 7, 11, 15], target = 9
因为 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]
2、两种代码(这里的O(n)时间复杂度解法,采用了空间换时间的方式)
class Solution(object):
def twoSum(self, nums, target):
"""
:type nums: List[int]
:type target: int
:rtype: List[int]
"""
"""
:Solution1
:One type of solution by which we can get higher speed but more memory consuming.
"""
dataset={}
index=0
for firstNumber in nums:
dataset[firstNumber]=index
index+=1
firstIndex=0
result=[]
for firstNumber in nums:
if dataset.has_key(target-firstNumber) and firstIndex!=dataset[target-firstNumber]:
result.append(firstIndex)
result.append(dataset[target-firstNumber])
return result
firstIndex+=1
return result
"""
solution2
firstIndex=0
secondIndex=0
result=[]
for firstNumber in nums:
secondIndex=0
for secondNumber in nums:
if firstIndex!=secondIndex:
sum_number=firstNumber+secondNumber
if sum_number==target:
result.append(firstIndex)
result.append(secondIndex)
return result
secondIndex+=1
firstIndex+=1
return result
"""