oj 1st题
解法
解法一:(求和)
1.求已缺失数组的和为num2,和完整数组的和为num1
2.num1-num2即为已缺失的数
代码尝试
查找错误
1.开始想的是numSize的前要不要加等于号
numSize=5
nums[0,3,5,4,1]
num [0,1,2,3,4,5]
没有找到错误
2.num1和num2没有定义初始值
int num1=0;int num2 =0;
解法二(异或)
思路:
1.x=0;
2.x在跟0-n的数异或
3.x与数组中的值异或
4.return x;x返回的值就是消失的那个数
了解异或运算
a^a=0; (自己和自己异或等于0)
a^0=a; (任何数字和零异或还是它本身)
abc=acb; (异或运算具有交换率)
看的他人的csdn上面是这样解释的{
相当于x=0nums[i]i
当num【i】与i相等时,异或为零,除了缺失的数,其他的数字都有伴,所以缺失数字最后会被剩下,赋于x,然后return x,该数组缺失数字就找到了
第一个for循环把除缺失数以外的其他数一个个拎出来,拎出来的一个个去第二个for循环中和【0~n】异或,找到和自己相同的数,便被异或为0
最终x=0消失的数字000000000.......^0
于是消失的数字便找到了}
想要详细地了解异或的过程,我就试着在循环中的每次运算后加“printf”输出值