和之前找数组中重复的数字的那题类似
既然是要求O(n)以及没有额外的空间,那就改变当前数组,如果出现了i,那就把i所对应的数字变为负,最后只要把正的都筛选出来,它们的下标就是没出现的数字。
class Solution {
public:
vector<int> findDisappearedNumbers(vector<int>& nums) {
for(int i=0;i<nums.size();i++)
{
int index=abs(nums[i])-1;
nums[index] = -abs(nums[index]);
}
vector<int> result;
for(int i=0;i<nums.size();i++)
{
if(nums[i]>0)
result.push_back(i+1);
}
return result;
}
};