需要了解的知识点:异或。同为0,不同为该非0数,即1^1=0,5^0=5;
(三种解决方案)
第一种
0^1^2^x^……^99^0^1…………99=x
核心代码段
for(int i=1;i<arr.length;i++)
arr[0]=arr[0]^arr[i] //此时从arr[0]被重新赋值
for(int i=0;i<arr.length-1;i++)
arr[0] = arr[0]^i //此时得到重复的值
第二种
for(int i=0;i<arr.length;i++)
for(int j=i+1;j<arr.length;j++)
if(arr[i]==arr[j])
return arr[i];
第三种
由于0到99加起来是一个固定的值。所以可以用数组的和减去这个固定的值,得到重复值
int sum = 0;
for(int i=0;i<99;i++)
sum = sum+i; //累加0到99
for(int i =1;i<arr.length-1;i++)
arr[0] = arr[0]+arr[i];//得到数组中所有数字的和
两者相减,得到异常值
int muti = arr[0] - sum;
muti 即为所找出的异常值