Python3语法知识:找到数组中两数之和等于目标数对应的坐标
python3 语法知识:找到数组中两数之和等于目标数对应的坐标
给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。
你可以假设每种输入只会对应一个答案。
示例:
给定 nums = [2, 7, 11, 15], target = 9
因为 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]
1.遍历数组方式
#两次循环列表,分别对列表中的所有可能的数字进行相加
def two_sum(alist,target):
if len(alist)<2:
return
for i in range(len(alist)-1):
for j in range(i+1,len(alist)):
if alist[i]+alist[j]==target:
return [i,j]
return [-1,-1]
nums=[2,7,11,15]
target=9
result=two_sum(nums,target)
print (result)
打印:[0, 1]
2.数组中同一个元素不能使用两遍。那么就不能用两次循环
def two_sum2(alist,target):
if len(alist)<2:
return
#新建立一个空字典用来保存数值及其在列表中对应的索引
dict1 = {}
for i in range(0, len(alist)):
#相减得到另一个数值
num = target - nums[i]
#如果另一个数值不在字典中,则将第一个数值及其的索引保存在字典中
if num not in dict1:
dict1[alist[i]] = i
#如果在字典中则返回
else:
return [dict1[num], i]
#print (dict1)
nums=[2,7,11,15]
target1=9
res=two_sum2(nums,target1)
print (res)
打印:[0, 1]