【发布时间】:2020-02-17 14:02:15
【问题描述】:
我正在尝试编写一个函数,该函数获取一个数字列表和一个整数,并返回一个元组,该元组包含列表中的一对数字,其总和必须与函数接收到的数字最接近。 例如:最近([10,22,28,29,30,40], 54) --> (22,30) 在循环和 O(n) 的时间复杂度中这样做对我来说很重要。 我的代码的问题是循环不想为我从列表开头获取的任何值重新运行列表结束... 我会很感激帮助:) 感谢帮助!
def closest(lst, x):
max_num = 0
cur = lst[0]
final = 0
my_tup = ()
for num in lst[::-1]:
max_num = cur + num
if max_num <= x:
if max_num > final:
final = max_num
my_tup = (cur, num)
else:
cur = lst[1]
return my_tup
print(closest([10,22,28,29,30,40], 54)) ---> return: (22,29)
【问题讨论】: