Являются ли эти два итерационных подхода каким-либо образом найти эквивалент ближайшей пары? - PullRequest
0 голосов
/ 21 марта 2019
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
...