Я пытаюсь решить битвы кода и заставить все работать, кроме следующего теста:
Input:
numbers: [1, 0, 2, 4, 3, 0]
sum: 5
Output:
Run the code to see output
Expected Output:
2
Console Output:
Empty
Цель битвы кода: Учитывая массив целых чисел,мы хотели бы найти ближайшую пару элементов, которые складываются в сумму.Вернуть расстояние между ближайшей парой (абсолютная разница между двумя индексами).Если нет пары, которая складывается в сумму, верните -1.Пример Для чисел = [1, 0, 2, 4, 3, 0] и sum = 5 выход должен быть findClosestPair (numbers, sum) = 2. 1 и 4 имеют сумму 5, но 2 и 3 ближе.для чисел = [2, 3, 7] и суммы = 8 вывод должен быть findClosestPair (числа, сумма) = -1.Не существует пар с суммой 8.
Следующая функция вернет все числа true для всех случаев, за исключением того, что последующий набор чисел ближе.В приведенном выше примере 2 и 3 ближе и должны возвращать расстояние 2, но мой код берет 1 и 4, останавливается и возвращает его.Как исправить это, добавив оператор if, позволяющий возвращать меньшее расстояние?
def findClosestPair(numbers, sum):
num_len = len(numbers)
distance = 10
for x in range(num_len):
for y in range(x+1,num_len):
if numbers[x] + numbers[y] == sum:
if distance > abs(y-x):
distance = abs(y-x)
else:
continue
return distance
else:
return int(-1)
Этот код выполняется, но для его выполнения требуется много времени.
def findClosestPair(numbers, sum):
num_len = len(numbers)
distance = 10
for x in range(num_len):
for y in range(x+1,num_len):
if numbers[x] + numbers[y] == sum:
if distance > abs(y-x):
distance = abs(y-x)
if distance != 10:
return distance
else:
return int(-1)