-
题目:
给出2*n + 1 个的数字,除其中一个数字之外其他每个数字均出现两次,找到这个数字。
样例
给出 [1,2,2,1,3,4,3],返回 4
-
首先了解下异或运算:
c++代码:
#include<stdio.h>
//位的异或运算:符号:^;自身异或为0,与0异或还是自己
void swap(int& a, int& b)
{
a = a ^ b; //a=1^2
b = b ^ a; //b=2^1^2=1
a = a ^ b; //a=1^2^1=2
}
int main()
{
int a = 1, b = 2;
swap(a, b);
printf("%d,%d",a, b);
}
结果:
-
题目解答:
参考链接:https://blog.csdn.net/westbrook1998/article/details/79337755
public class Solution {
/*
* @param A: An integer array
* @return: An integer
*/
public int singleNumber(int[] A) {
// write your code here
int a=A[0];
for(int i=1;i<A.length;i++){
a^=A[i];
}
return a;
}
}