一个无序排序的数字在1-n的范围内,但是其中却少了一个数字,
求出其中的一个
直接用异或运算
a^b=c
可以知道b = c ^ a 或者 b = a ^ c满足交换律
public class Solution {
public int missingNumber(int[] nums) {
int total = 0, k = 0;
for(int i = 0; i < nums.length; ++i){
total = total ^ i;
k = k ^ nums[i];
}
total = total ^ nums.length;
final int one = 1;
int ans = 0;
int n2 = 1;
while(k != 0 || total != 0){
int t1 = total & one;
int t2 = k & one;
ans += n2 * (t1 ^ t2);
total >>= 1;
k >>= 1;
n2 <<= 1;
}
return ans;
}
}