题目描述:数组中有n-1个数,是1-n中n个数缺失一个数后的一种随机排序,例如 int arr[5] = {3,1,4,6,2} 可以得到 数组中缺失的数为5。
思路:先求数组中所有数的异或值num1,再求1-n中所有数的异或值num2,num1再异或上num2即为答案。
int lostNum(int* arr, int len) {
if (arr && len) {
int num1, num2;
num1 = num2 = 0;
for (int i = 0; i < len; i++) {
num1 ^= arr[i];
num2 ^= i + 1;
}
num2 ^= len + 1; //num2需要再和n异或,即len+1
return num1 ^ num2;
}
throw new exception("out of range");
return 0;
}