问题描述
给出一个数组,在其中找到两个数,使得它们的和接近但不超过目标值,并返回最接近的值。
示例
输入 target=15, list=[1,3,5,11,7] ,输出 14 ,因为 11+3=14 ;输入 target=16, list=[1,3,5,11,7] ,输出 16 ,因为 11+5=16 。
代码实现
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
def closest_target(list, target): max = 0 for n,i in enumerate(list): if n == len(list)-1: return max for j in list[n+1:]: if (i+j <= target) and (i+j >= max): max = i+j list = [1, 3, 5, 11, 7] target = 15 print('输入list:', list) print('输入target:', target) print('输出:', closest_target(list, target)) |
运行结果
1 2 3 |
输入list: [1, 3, 5, 11, 7] 输入target: 15 输出: 14 |