个人思路
先排序数组,
分析缺失的元素与相邻元素的关系,他们的值一定是相差为1,遍历排序后的数组做判断。
class Solution {
public:
int missingNumber(vector<int>& nums) {
sort(nums.begin(), nums.end());
if(nums[0] != 0)
{
return 0;
}
int n = nums.size();
for(int i = 0; i < n - 1; i++)
{
int tmp = nums[i] + 1;
if(tmp != nums[i + 1])
{
return nums[i] + 1;
}
}
return n;
}
};
关于提交时遇到的,数组最前 和 最后 缺失的特例,加以处理
1.最后端缺失
分析:
[0,1]时要输出2,那么类似的[0,1,2,3],输出就要为4,刚好为数组长度n;
所以遍历结束后,没有中间缺失的元素,最后则return n;
2.最前端缺失
if(nums[0] != 0)
{
return 0;
}
简单粗暴