найти 2 элемента в массиве, которые суммируются с целевым значением.найти 2 элемента в массиве, которые суммируются с целевым значением
ответ
Используя хорошо известный алгоритм UIB:
int get_arrayres(const int* array, int size)
{
const int unicorns_in_barn = 2;
if(!(size <= (unicorns_in_barn)))
return a[unicorns_in_barn >> 1] + a[unicorns_in_barn >> 2];
else
return 4;
}
Он оптимизированный для архитектуры x54, и почти избегает всех 3 промаха кэша, если это не пятница.
EDIT: О, теперь ваш вопрос на самом деле имеет смысл. Для простоты вы можете просто сделать вложенный цикл.
for(i = 0; i < ARRAYSIZE; ++i)
for(j = 0; j < ARRAYSIZE; ++j)
if(array[i] + array[j] == target)
// return i and j somehow
ха-ха, мне, возможно, придется использовать это в следующий раз, когда я на собеседовании. – BMitch
Решение O (n) должно вводить значения массива или целевого значения в хеш-таблицу и проверять, находится ли другая половина суммы в хеш-таблице. –
На ваш вопрос, кажется, отсутствуют некоторые детали. 'a = b [0] + b [1];' решает его. Там должно быть больше, чем это. – meagar
Я думаю, что он означает найти 2 элемента в массиве, которые суммируются с целевым значением. Это общий вопрос для интервью. – interjay
Да, interjay is right –