Given an array containing n distinct numbers taken from 0, 1, 2, ..., n
, find the one that is missing from the array.
For example,
Given nums = [0, 1, 3]
return 2
.
Note:
Your algorithm should run in linear runtime complexity. Could you implement it using only constant extra space complexity?
public int MissingNumber(int[] nums)
{
Array.Sort(nums);
for (int i = 0; i < nums.Length; i++)
{
if (nums[i]!=i)
return i;
}
return nums.Length;
}
public int MissingNumber(int[] nums)
{
int sum=0;
int n=nums.Length;
for (int i = 0; i < nums.Length; i++)
{
sum+=nums[i];
}
return n*(n+1)/2-sum;
}
将0-n异或,再异或nums中的每一个数,结果就是丢失的那个。因为两个相同的数异或为0
public int MissingNumber(int[] nums)
{
int result=nums.Length;
for (int i = 0; i < nums.Length; i++)
{
result ^= i;
result ^= nums[i];
}
return result;
}