方法一:排序然后遍历,时间复杂度最好的就是o(NlogN)不够简洁
方法二:异或运算 将缺失值补为0,那么由于数组值是0~n,而数组下标也是0~n,那么在异或运算后即可得到缺失值的下标也就是该缺失值。
方法三:等差数列求和并相减,就可以得到缺失值,但是要注意溢出问题。
class Solution
{
//异或运算求解
public int res1(int[] nums)
{
int n = nums.Length;
int k = n;
for (int i = 0; i < nums.Length; i++)
{
k ^= i ^ nums[i];
}
return k;
}
//元素相减求解
public int res2(int[] nums)
{
int n = nums.Length;
int k = n;
for (int i = 0; i < nums.Length; i++)
{
k += i - nums[i];
}
return k;
}
}
摘自公众号:labuladong