此问题正在here
进行如何找出数组中的修改元素?
例如:修改前的数组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属性来解决这个问题?
答案 0 :(得分:2)
xor
具有关联性和可交换性,因此当xor1
将数组1中的所有元素和数组2中的xor2
组合在一起时,未修改的元素都存在于两者中,因此使用{{ 1}},它们被排除因为xor1 ^ xor2
,所以剩下的是x ^ x == 0
中的old ^ new
,即从数组的旧元素到更改元素的修改。
然而,它既没有说明旧元素是什么,也没有说新元素是什么,所以不解决了所述的问题。