我最近在做一些编程挑战,其中之一就是这个问题。
给定一个非空的零索引数组A,由N个整数组成。该数组包含奇数个元素,数组中的每个元素都可以与另一个具有相同值的元素配对,除了一个未配对的元素。找到未配对的值。例如,给定数组A:A[0] = 9 A[1] = 3 A[2] = 9 A[3] = 3 A[4] = 9 A[5] = 7 A[6] = 9,函数应返回7。
完成我的代码后,我发现了这个解决方案。
给定一个非空的零索引数组A,由N个整数组成。该数组包含奇数个元素,数组中的每个元素都可以与另一个具有相同值的元素配对,除了一个未配对的元素。找到未配对的值。例如,给定数组A:A[0] = 9 A[1] = 3 A[2] = 9 A[3] = 3 A[4] = 9 A[5] = 7 A[6] = 9,函数应返回7。
完成我的代码后,我发现了这个解决方案。
public int solution(int[] A) {
int r = 0;
for(int i=0;i<A.length;i++)
r ^=A[i];
return r;
}
我对这段代码感到惊讶。我从未见过异或赋值运算符,并想知道这个解决方案是如何工作的。如果有人能为我讲解一下这个简单的代码并解释它的工作原理,那就太棒了。
r ^=A[i];
和r = r ^ A[i];
是相同的。你对这段代码片段还有什么不理解的吗? - Erwin Bolwidt