myList = [500, 700, 1000, 1400, 2000, 6000]
target_value = 1600
diff = sys.maxint
Две итерации, чтобы найти пару чисел, ближайшую к сумме. Первый подход с использованием вложенного цикла для проверки внутренних и внешних значений. Второй подход, проходящий слева и справа снаружи. Предположим, список отсортирован.
def iteration1(myList,target_value):
for o in range(0, len(myList)):
for i in range(o, len(myList)):
if (myList[o] + myList[i]) - target_value < diff:
# do something
if ((myList[o] + myList[i]) > target_value):
# go to next loop iteration
continue
return #something
def iteration2(myList,target_value):
l = 0, r = len(myList)
while l < r:
if (myList[l] + myList[r]) - target_value < diff:
# do something
if ((myList[l] + myList[r]) < target_value):
# move to greater values
l += 1
else:
# move to lesser values
r -= 1
return #something