题目来源:csdn论坛:有1,1,2,2,3,3....n,n共2n个数,其中各个数放的顺序是任意的,没有大小关系,即没有排序,是杂乱放的。现在删除了其中的一个数剩下了2n - 1个数,求删除的那个数!
思路1:遍历,复杂度过高
思路2:1,利用公式求出2n个数之和sum;《要考虑溢出》
2,遍历2n-1次,用sum去减每个遍历的数据;
3,得出最后结果
思路3:利用异或处理
论坛里很妙的解决办法:
unsigned int res = 0;
for( n = 0; n <= 2n - 1; n++)
res ^= data[n];
巧用异或
思路3最巧,也最难想到。这也会用到位运算~~~