2011-02-09 11 views
0

ターゲット値に合計する配列内の2つの要素を見つける。ターゲット値に合計する配列内の2つの要素を見つける

+5

ご不明な点がいくつかあります。 'a = b [0] + b [1];はそれを解決します。それ以上になければならない。 – meagar

+0

私は彼が目標値に合計する配列の2つの要素を見つけることを意味すると思います。よくあるインタビューの質問です。 – interjay

+0

はい、インタージャーは正しいです –

答えて

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つのキャッシュミスを回避できます。

編集:ああ、今あなたの質問は理にかなっています。簡単にするために、ネストされたforループを実行することができます。

for(i = 0; i < ARRAYSIZE; ++i) 
    for(j = 0; j < ARRAYSIZE; ++j) 
     if(array[i] + array[j] == target) 
      // return i and j somehow 
+0

haha​​、次回のインタビューでこれを使用する必要があるかもしれません。 – BMitch

+2

O(n)の解決策は、配列の値またはターゲット値をハッシュテーブルに入力して、合計の残りの半分がハッシュテーブルにあるかどうかを確認することです。 –

関連する問題