题目来源: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最巧,也最难想到。这也会用到位运算~~~
本文探讨了一种有效的算法来寻找从一系列重复数字中被删除的那个数。通过介绍三种不同的思路,包括遍历、数学求和及异或操作,文章详细解释了如何高效地找出缺失的数字,并特别强调了位运算技巧在解决此类问题中的应用。
1474

被折叠的 条评论
为什么被折叠?



