这个问题正在从 here 尝试。
How to find out modified element in an array?
Eg: Array A= {1,2,3,4,5,6} before modifiction After modification A={1,2,3,7,5,6}. Here the element 4 is replaced with element 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
具有关联性和交换性,因此当 xor1
将数组 1 中的所有元素和数组 2 中的 xor2
元素异或在一起时,未修改的元素两者都存在,因此对于 xor1 ^ xor2
,它们会被消除,因为 x ^ x == 0
,所以剩下的是 old ^ new
> 在xor1 ^ xor2
中,这是从旧的数组元素到已更改的数组元素的修改。
但是,它既没有说明旧元素是什么,也没有说明新元素是什么,因此它没有解决所述问题。
关于c - 使用 XOR 属性找出数组中修改的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10758728/