#algorithm #data-structures
#алгоритм #структуры данных
Вопрос:
Существует отсортированный массив из n элементов (как положительных, так и отрицательных), мы должны найти разницу между каждой парой элементов, являющихся (смежными) разницей между элементами с индексами (0 1, 1 2, 2 3 и так далее n-1 n) и найти, какая разница близка к нулю.
Пример: -56 -57 -46 -43 -33 -25 -24 -12 -10 1 3 6 7 8 9 56 57 68 78
Здесь 1 — разница, близкая к 0.
Условие: без нахождения разницы между каждой парой не проходите через весь массив
Я получил это, но без условия
Комментарии:
1. если вы просто сравниваете 0-1, 1-2, 2-3 и так далее, вы уже не сравниваете все пары (такие как 0-2, 0-3 и так далее). Покажите свой код, он, вероятно, уже правильный.
Ответ №1:
Сканируйте пары линейным способом, получая к ним доступ с помощью индексов i
и i 1
:
best = ABS(data[0] - data[1]);
for (i = 1; i < data.length - 2; i )
{
d = ABS(data[i] - data[i 1]);
if (d < best)
{
best = d;
}
}
Возможно, вы захотите выйти из for()
пораньше, но это зависит. У этого есть стоимость.
if (best == 0)
{
break; // for()
}