个人技术分享

【问题描述】:给定一个数组,在数组中找到两个数,使它们的和最接近目标值的值但不超过目标值,然后返回它们的和。
【问题示例】:输入target=15,array=[1,3,5,11,7],输出14,3+11=14。


完整代码如下:
a=list(map(int,input().split()))
b=int(input())
d=[]
for i in range(0,len(a)):
    if a[i]>b:
        del a[i]
for j in range(0,len(a)):
    for k in range(0,len(a)):
        if a[j]+a[k]-b<=0:
            d.insert(0,abs(a[j]+a[k]-b))
for l in range(0,len(d)):
    if d[l]==min(d):
        e=d[l]
print(b-e)


代码解释:
“a=list(map(int,input().split()))
b=int(input())
d=[] ”,让用户输入一个数组,接着输入目标值,建立一个空列表d。
“for i in range(0,len(a)):
    if a[i]>b:
        del a[i]  ”,将用户输入的数组中大于目标数的数值删除(因为要保证两个数的和不超过目标值)。
“for j in range(0,len(a)):
    for k in range(0,len(a)):
        if a[j]+a[k]-b<=0:
            d.insert(0,abs(a[j]+a[k]-b)) “,,遍历数组,筛选出和不超过目标值的两个数,然后将两个数的和减去目标值的绝对值插入列表d中。
” for l in range(0,len(d)):
     if d[l]==min(d):
        e=d[l]  “,遍历完数组后,遍历列表d,求出d中的最小值,然后将其赋给e。         
“print(b-e) ”,打印目标值与最小绝对值的差,即为和最接近但不超过目标值的两个数的和。


运行效果展示:

e8c8ae40424a40908237a966e27a52ac.jpg

ee97aed2562442f6b11b8bf901c1b160.jpg 

   (声明:以上内容均为原创)