2

この質問はここから試行されています

配列内の変更された要素を見つける方法は?

例: 配列 A= {1,2,3,4,5,6} 変更前 変更後 A={1,2,3,7,5,6}. ここでは、要素 4 が要素 7 に置き換えられています。

この問題を解決するためにXORプロパティを使用した人もいます

 int getModifiedElement(int arr1[ ],int arr2[ ])
       {
                   int xor1 = arr1[0];
                   int xor2 = arr2[0];
                              for(int i=1;<i<arr1.length;i++)
                              {
                                     xor1 = xor1 ^ arr1[i];
                                     xor2 = xor2 ^ arr2[i];
                              }
             return xor1^xor2;
            }

問題を解決するためにどの XOR プロパティが使用されているかわかりません。

4

1 に答える 1

2

xorは結合法則で可換であるため、xor1配列1のすべての要素とxor2配列2の要素を一緒に排他的論理和すると、変更されていない要素が両方に存在します。したがって、で、それらはxor1 ^ xor2削除されます。配列の変更された要素に対して古い。x ^ x == 0old ^ newxor1 ^ xor2

ただし、古い要素が何であるか、新しい要素が何であるかは示されていないため、前述のように問題を解決することはできません。

于 2012-05-25T17:22:12.870 に答える