NickYur Ответов: 1

Найти расстояние между 2 числами в двух массивах


У меня есть 2 массива натуральных чисел и 1 целое число, давайте назовем его "d".
Мне нужно найти 2 числа из 2 разных массивов, скажем " x " и "y", которые удовлетворяют условию x-y=d или y-x=d.

Мне нужен самый эффективный способ.

Что я уже пробовал:

int i, j, flag = 1;
for (i = 0; i < size_a; i++)
	for (j = 0; j < size_b; j++)
		if (abs(a[i] - b[j]) == num)
		return 1;
return 0;


Это работает, но не так эффективно, если у вас, ребята, есть какая-то идея получше, я буду рад ее услышать.

Заранее спасибо,
Ник

CPallini

Если массивы не упорядочены, я не вижу способа улучшить это.

1 Ответов

Рейтинг:
0

KarstenK

CPallini прав, поэтому заказ может улучшить скорость вашего цикла, потому что вы можете остановить цикл, когда разница становится больше, чем num. Подумайте о том, чтобы отбросить некоторые сравнения, если числа меньше num. Может быть, только если всегда больше нуля.

Если вам нужно найти числа, вы также должны сохранить их для вывода.

if (abs(a[i] - b[j]) == num)
  {
    result1 = a[i];//store in variable with greater scope
    result2 = b[i];
    return 1;
}
А как насчет множества решений в массиве?

Но скорость не является основной проблемой в этой простой задаче. Такая "оптимизация" часто приводит к сложному и причудливому коду, что приводит к странным ошибкам и проблемам.

Итак, вы ничего не упустили из виду?