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 == 0,所以剩下的是old ^ newin xor1 ^ xor2,即从old 到数组的更改元素。

然而,它既没有说旧元素是什么,也没有说新元素是什么,因此它并没有解决上述问题。

于 2012-05-25T17:22:12.870 回答