要求:时间复杂度为O(n)且不消耗额外的空间
思路:要像一种办法来代表每个数字是否出现过
设a[i] 属于1-n那么 令j=(a[i]-1)mod n, a[j]+=n;
最后遍历一遍数组看看数组中哪个元素<=n,即为未出现过的数字
class Solution {
public:
vector<int> findDisappearedNumbers(vector<int>& nums) {
vector<int> res;
if(nums.empty()) return nums;
for(int i=0;i<nums.size();i++)
{
int index=(nums[i]-1)%nums.size();
nums[index]+=nums.size();
}
for(int i=0;i<nums.size();i++)
{
if(nums[i]<=nums.size())
res.push_back(i+1);
}
return res;
}
};