给定一个包含 0, 1, 2, ..., n 中 n 个数的序列,找出 0 .. n 中没有出现在序列中的那个数。
示例 1: 输入: [3,0,1] 输出: 2 示例 2: 输入: [9,6,4,2,3,5,7,0,1] 输出: 8
//排序后检查
public int MissingNumber(int[] nums) {
Array.Sort(nums);
if(nums.Length == 0 || nums[0] == 1) return 0;
for(int i = 0;i<nums.Length - 1;i++)
{
if(nums[i] - nums[i+1] != -1)
{
return nums[i] + 1;
}
}
return nums[nums.Length-1]+1;
}//高斯求和
public int MissingNumber(int[] nums) {
int sum = 0;
for(int i = 0;i<nums.Length;i++)
{
sum += nums[i];
}
//因为第一个元素为0,所以...
return nums.Length * (nums.Length+1)/2 - sum;
}//异或法
public int MissingNumber(int[] nums) {
int xor = 0;
int i = 0;
for(;i<nums.Length;i++)
{
//和相同的数异或两次为本身,和0异或为本身
xor = xor ^ i ^ nums[i];
}
return xor ^ i;
}