给定一个大小为n的数组,值为0, 1, 2, ..., n
,且不含重复元素,找到数组中缺少的那个数字。
class Solution {
//268*.给定一个包含n个不同数字的数组0, 1, 2, ..., n,找到数组中缺少的数字。异或运算.将索引和值均一起进行异或运算
//索引为[0,n-1]-->索引提供值{0,n-1}个一次;若nums缺失的是n,则nums提供值{0,n-1}各一次,循环结束的xor为0
//若nums缺失的是{0.n-1}中的任一个,设缺失的为i∈[0,n-1],则nums提供{0,i-1}U{i+1,n-1}U{n}各一次,循环结束的xor=i^n
public int missingNumber(int[] nums) {
int xor=0;
for(int i=0;i<nums.length;i++){
xor=xor^i^nums[i];
}
return xor^nums.length;
}
}