问题描述:一个长度为n的数组由0~n中n-1个不同的数字组成。找出没有的那一个。
思路:原想通过位运算,但没想出来。后来想到可以将数组中数加和。然后与n个数的和相减即可得。
原代码:
public int missingNumber(int[] nums) {
int totalNum=0;
for(int i=0;i<nums.length;i++){
totalNum+=nums[i];
}
return nums.length*(nums.length+1)/2-totalNum;
}
最佳答案
public int missingNumber(int[] nums) {
int res = nums.length;
for(int i = 0; i < nums.length; i++) {
res ^= i;
res ^= nums[i];
}
return res;
}
异或是可行的