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
"""

本文详细解析了在给定数组中寻找两数之和等于目标值的问题,并提供了两种解决方案,包括一种时间复杂度为O(n)的高效算法。通过空间换时间的方式,该算法能在较短时间内找到符合条件的两个数的下标。

被折叠的 条评论
为什么被折叠?



