方法一:181 ms 排序后 与i 不等即为答案
int findMissing(vector<int> &nums)
{
// write your code here
int res=0;
int i;
sort(nums.begin(),nums.end());
for(i=0;i<nums.size();i++)
{
if(res==nums[i])
res++;
else
break;
}
return res;
}
方法二:186ms 求和做差 少的那个数即为答案
<pre name="code" class="cpp">int findMissing(vector<int> &nums) {
// write your code here
int sum = 0;
int tem = 0;
if(nums.empty())
return 0;
for(int i=0;i<=nums.size();i++)
sum+=i;
for(int i=0;i<nums.size();i++)
tem+=nums[i];
return sum-tem;
}
方法三:141ms 把相等位置上的数都对应 ,遍历完成后 不相等的即为答案,如果都相等返回最后的size n
<pre name="code" class="cpp"> int findMissing(vector<int> &nums) {
// write your code here
int n = nums.size(), i = 0;
while (i<n) {
while (nums[i]!=i && nums[i]<n) swap(nums[i], nums[nums[i]]);
++i;
}
for (int i=0; i<n; ++i)
if (nums[i]!=i) return i;
return n;
}
方法四: 异或 163ms 两个相同的数异或为0
int findMissing(vector<int> &nums) {
// write your code
int len=nums.size(),x=0;
for(int i=0;i<len;i++) x^=nums[i];
for(int i=1;i<=len;i++) x^=i;
return x;
}