只出现一次的数字: 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。如果把序列 0-n补充完整的话,然后再依次让这两个数组异或就可以找出那个不存在的数了
异或大法
#include <iostream>
using namespace std;
int main()
{
int a[10]={0,6,1,2,3,4,7,9,5};
int temp=9;//数组的长度
for(int i=0;i<9;i++)
{
temp ^=a[i];
temp^=i;
}
cout<<temp;
return 0;
}
上边为什么是数组长度呢,因为 i 到不了最后的n所以用数组长度表示 n
第二种方法 求出 0 到 n 之间所有的数字之和遍历数组计算出原始数组中数字的累积和 两和相减,差值就是丢失的那个数字