2011-02-09 2 views
0

найти 2 элемента в массиве, которые суммируются с целевым значением.найти 2 элемента в массиве, которые суммируются с целевым значением

+5

На ваш вопрос, кажется, отсутствуют некоторые детали. 'a = b [0] + b [1];' решает его. Там должно быть больше, чем это. – meagar

+0

Я думаю, что он означает найти 2 элемента в массиве, которые суммируются с целевым значением. Это общий вопрос для интервью. – interjay

+0

Да, interjay is right –

ответ

0

Используя хорошо известный алгоритм 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 
+0

ха-ха, мне, возможно, придется использовать это в следующий раз, когда я на собеседовании. – BMitch

+2

Решение O (n) должно вводить значения массива или целевого значения в хеш-таблицу и проверять, находится ли другая половина суммы в хеш-таблице. –