两数和的目标
描述
给定一个整数列表,在其中找到两个元素使其相加之和等于目标数,并返回两个整数在列表中的下标。如果没有符合条件的数字,返回False,可以假设题目的解唯一。时间复杂度:O(n)
注意:分两次input()分别读入整数列表和目标数;输出采用列表形式
输入 | 输出 |
---|---|
[2,7,11,15] 和9 | [0,1] |
方法一:
ls=eval(input(""))
lt=[]
q=len(ls)
n=int(input(""))
for i in range(q):
for m in range(i+1,q):
if ls[i]+ls[m]==n:
lt.append(i)
lt.append(m)
q=0
break
if len(lt)==0:
print("False")
else:
print("[",end="")
for i in range(len(lt)):
if i != len(lt)-1:
print(lt[i],end=",")
else:
print(lt[i],end="")
print("]")
方法二:
def findTowNum(ls,target):
dic={}
for index in range(len(ls)):
if dic.get(ls[index]) == None:
res = target - ls[index]
dic[res]=index
else:
return (dic.get(ls[index]),index)
return False
def main():
ls=eval(input())
n=eval(input())
result = findTowNum(ls,n)
if result == False:
print(result)
else:
i,j=result
print('[{0},{1}]'.format(i,j))
main()
ls=eval(input())
n=eval(input())
lt=[]
for i in range(len(ls)):
a=n-ls[i]
if a in ls:
for j in range(i+1,len(ls)):
if a==ls[j]:
lt.append(i)
lt=lt+[j]
str='['+str(i)+','+str(j)+']'
else:
a=0
if len(lt)==0:
print(False)
else:
print(str)
def twosum(a,b):
for i in range(0,len(a)):
for j in range(0,len(a)):
if i==j:
continue
if a[i]+a[j]==b:
return i,j
return False
a=eval(input())
b=eval(input())
c=twosum(a,b)
if c==False:
print(c)
else:
i,j=c
print('[{0},{1}]'.format(i,j))